+

JP7646570B2 - Suitability of transactions for inclusion in the blockchain - Google Patents

Suitability of transactions for inclusion in the blockchain Download PDF

Info

Publication number
JP7646570B2
JP7646570B2 JP2021567834A JP2021567834A JP7646570B2 JP 7646570 B2 JP7646570 B2 JP 7646570B2 JP 2021567834 A JP2021567834 A JP 2021567834A JP 2021567834 A JP2021567834 A JP 2021567834A JP 7646570 B2 JP7646570 B2 JP 7646570B2
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.)
Active
Application number
JP2021567834A
Other languages
Japanese (ja)
Other versions
JPWO2020240297A5 (en
JP2022532886A (en
Inventor
ジャーン,ウエイ
デイヴィーズ,ジャック
ライト,クレイグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of JP2022532886A publication Critical patent/JP2022532886A/en
Publication of JPWO2020240297A5 publication Critical patent/JPWO2020240297A5/ja
Application granted granted Critical
Publication of JP7646570B2 publication Critical patent/JP7646570B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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/3252Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic 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)

Description

本開示は、ブロックチェーンの文脈における適応性(malleability)の現象、つまりトランザクションを無効にすることなくトランザクションの特定の未署名部分を変更する能力に関連する。 This disclosure relates to the phenomenon of malleability in the context of blockchain, i.e. the ability to change certain unsigned parts of a transaction without invalidating the transaction.

ブロックチェーンとは、分散型データ構造の形式を指し、ブロックチェーンの複製のコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク内の複数のノードのそれぞれにおいて維持される。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。各トランザクションは、シーケンスの中の先行するトランザクションを指してよい。トランザクションは、ネットワークに提供されて、「マイニング」として知られる処理により、新しいブロックに含まれることができる。「マイニング」は、複数のマイニングノードの各々が「proof-of-work」を実行するために競争する、つまりブロックに含まれることを待っている保留中のトランザクションのプールに基づき、暗号パズルを解くことを含む。 Blockchain refers to a form of distributed data structure in which a duplicate copy of the blockchain is maintained at each of multiple nodes in a peer-to-peer (P2P) network. A blockchain contains a chain of blocks of data, with each block containing one or more transactions. Each transaction may point to the previous transaction in the sequence. Transactions can be contributed to the network and included in new blocks through a process known as "mining." "Mining" involves each of multiple mining nodes competing to perform a "proof-of-work," i.e., solving a cryptographic puzzle based on the pool of pending transactions waiting to be included in a block.

従来、ブロックチェーン内のトランザクションは、デジタルアセット、すなわち、価値のストアとして機能するデータを伝達するために使用される。しかし、ブロックチェーンの上に追加の機能を積み重ねるために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションのアウトプットに追加のユーザデータを格納することを可能にしてよい。現代のブロックチェーンは、単一トランザクション内に格納できる最大データ容量を増加させ、より複雑なデータを組み込むことを可能にしている。例えば、これは、ブロックチェーン内に電子ドキュメント(electronic document)、或いはオーディオ若しくはビデオデータを格納するために使用され得る。 Traditionally, transactions in a blockchain are used to transfer digital assets, i.e. data that acts as a store of value. However, blockchains can also be used to layer additional functionality on top of the blockchain. For example, blockchain protocols may allow additional user data to be stored in the output of a transaction. Modern blockchains increase the maximum amount of data that can be stored within a single transaction, allowing more complex data to be incorporated. For example, this could be used to store electronic documents, or audio or video data, within the blockchain.

ネットワーク内の各ノードは、転送、マイニング、及び記憶のうちの任意の1、2、又は3つ全部の役割を有することができる。転送ノードは、それぞれ、(有効な)トランザクションを1つ以上の他のノードへ伝播させる。従って、それらの間でネットワークのノードを通じてトランザクションを伝播させる。マイニングノードは、それぞれ、トランザクションのマイニングを実行してブロックにするために競争する。記憶ノードは、それぞれ、ブロックチェーンのマイニングされたブロックの彼ら自身のコピーを格納する。トランザクションをブロックチェーンに記録させるために、パーティは、該トランザクションを、伝播させるようにネットワークのノードのうちの1つへ送信する。トランザクションを受信したマイニングノードは、トランザクションをマイニングして新しいブロックにするよう競争してよい。各ノードは、トランザクションが有効であるための1つ以上の条件を含む同じノードプロトコルを尊重するよう構成される。無効なトランザクションは、伝播されず、マイニングされてブロックにされることもない。トランザクションが検証され、それによってブロックチェーンに受け入れられたと仮定すると、追加のユーザデータは、従って、不変の公開レコードとしてP2Pネットワークの各ノードに格納されたままである。 Each node in the network can have any one, two, or all three roles: forwarding, mining, and storage. Each forwarding node propagates (valid) transactions to one or more other nodes, thus propagating transactions among themselves through the nodes of the network. Each mining node competes to mine transactions into blocks. Each storage node stores their own copy of the mined block of the blockchain. To have a transaction recorded in the blockchain, a party sends the transaction to one of the nodes of the network to be propagated. Mining nodes that receive a transaction may compete to mine the transaction into a new block. Each node is configured to respect the same node protocol, which includes one or more conditions for a transaction to be valid. Invalid transactions are neither propagated nor mined into blocks. Assuming the transaction is verified and thereby accepted into the blockchain, the additional user data therefore remains stored in each node of the P2P network as an immutable public record.

最新のブロックを生成するために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つのインプットを含む。
Miners who successfully solve the proof-of-work puzzle to generate an updated block are typically rewarded with a transaction called a "generation transaction" that generates a new amount of the digital asset. The transaction may also optionally specify an additional mining fee for successful miners. Proof-of-work encourages miners not to cheat the system by including double-spending transactions in their blocks, because it requires a significant amount of computational resources to mine a block, and because blocks containing double-spending attempts may not be accepted by other nodes.
In an “output-based” model (sometimes called a UTXO-based model), the data structure of a given transaction includes one or more inputs and one or more outputs. Any spendable output includes an element, sometimes called a UTXO (for “unspent transaction output”), that specifies an amount of a digital asset. The output may further include a locking script that specifies a condition for redeeming the output. Each input includes a pointer to such an output in a prior transaction and may further include an unlocking script for unlocking the locking script of the pointed-to output. Thus, when considering a pair of transactions, we refer to them as a first transaction and a second transaction (or “target” transaction). The first transaction includes at least one output that includes a locking script that specifies an amount of a digital asset and defines one or more conditions for unlocking the output. The second target transaction includes at least one input that includes a pointer to an output of the first transaction and an unlocking script for unlocking the output of the first transaction.

このようなモデルでは、第2のターゲットトランザクションが、伝播されてブロックチェーンに記録されるようP2Pネットワークへ送信されると、各ノードにおいて適用される有効性のための条件のうちの1つは、アンロックスクリプトが第1トランザクションのロックスクリプト内で定義された要件を満たすことである。ターゲットトランザクションが有効であるための別の条件は、第1トランザクションのアウトプットが、別の有効なトランザクションによって未だ償還されていないことである。これらの条件のうちのいずれかに従いターゲットトランザクションが無効であると分かった任意のノードは、該トランザクションを伝播させず、ブロックチェーンに記録させるためにマイニングしてブロックに含めることもしない。 In such a model, when a second target transaction is sent to the P2P network to be propagated and recorded in the blockchain, one of the conditions for validity applied at each node is that the unlock script meets the requirements defined in the lock script of the first transaction. Another condition for the target transaction to be valid is that the output of the first transaction has not yet been redeemed by another valid transaction. Any node that finds the target transaction to be invalid according to any of these conditions will not propagate it or mine it for inclusion in a block for recording in the blockchain.

例えば、ターゲットトランザクションは、第1パーティ(「Alice」)から第2パーティ(「Bob」)へのデジタルアセット額を運ぶためのものである。先行する第1トランザクションのロックスクリプト内で定義された要件のうちの1つは、標準的に、ターゲットトランザクションのアンロックスクリプトがAliceの暗号署名を含むことである。署名は、ターゲットトランザクションの部分に署名するAliceにより生成されなければならない。これがどの部分であるかは、アンロックスクリプトにより柔軟に定義されてよく、又は使用されるプロトコルに依存して、ノードプロトコルの本来の特徴であってよい。しかしながら、署名されるべき部分は、標準的に、ターゲットトランザクションの特定の他の部分、例えばアンロックスクリプト自体の一部又は全部を除く。 For example, a target transaction is to carry an amount of a digital asset from a first party ("Alice") to a second party ("Bob"). One of the requirements defined in the locking script of the preceding first transaction is, typically, that the unlocking script of the target transaction includes Alice's cryptographic signature. The signature must be generated by Alice signing a portion of the target transaction. Which portion this is may be flexibly defined by the unlocking script, or may be an inherent feature of the node protocol, depending on the protocol used. However, the portion to be signed typically excludes certain other portions of the target transaction, such as some or all of the unlocking script itself.

これは、「適応性(malleability)」の可能性を生成する。つまり、マイニングの前に、署名されていないターゲットトランザクションの部分が、トランザクションを無効にすることなく、変更(「malleated」)可能である。適応性は、暗号法において知られている概念である。これは、通常、セキュリティ関心事として知られており、それによりメッセージが悪意を持って変更され得るが、依然として真正であるととして受け入れられる。ブロックチェーンの文脈では、適応性は、必ずしも関心事ではないが、単に奇妙なアーチファクトとして知られており、それにより、トランザクションの特定の部分が該トランザクションを無効にすることなく変更可能である。 This creates the possibility of "malleability", i.e. parts of the target transaction that were not signed prior to mining can be changed ("malleated") without invalidating the transaction. Malleability is a known concept in cryptography. It is usually known as a security concern, whereby a message can be maliciously altered and still be accepted as authentic. In the context of blockchain, malleability is not necessarily a concern, but is simply known as a strange artifact, whereby certain parts of a transaction can be changed without invalidating the transaction.

近年、トランザクションをメディアデータのキャリアとして使用するために、適応性を慎重に利用する提案が行われた。データコンテンツをトランザクションのアンロックスクリプトに含むことができ、このトランザクションは、次に、「支払い(payment)チャネル」と呼ばれるサイドチャネルを介してパーティ間で送信される。パーティのうちの1つは、次に、トランザクションを変更して(malleate)データを除去し、変更したバージョンをマイニングされるようにP2Pネットワークへ向けて送信する(一方、データが除去されなかった場合、トランザクションは、ブロックチェーンを膨大にし、トランザクションを受け入れるためにマイナーにより要求される報酬は、トランザクションのデータサイズと共に標準的にスケーリングするので、標準的にはより高いマイニング手数料も要求する)。 Recently, a proposal has been made to judiciously exploit this flexibility in order to use transactions as carriers of media data. The data content can be included in the unlock script of a transaction, which is then sent between the parties via a side channel called the "payment channel". One of the parties then malleates the transaction to remove the data and sends the modified version towards the P2P network to be mined (while if the data had not been removed, the transaction would have bloated the blockchain and typically also required higher mining fees, since the reward required by miners to accept the transaction typically scales with the data size of the transaction).

本開示は、適応性、又はより一般的には更新可能性が肯定的な特徴として利用できる更なる方法を認識する。特に、トランザクションのペアのうちの第1トランザクションは、そのロックスクリプト内に複数の異なるアンロック条件を含み得ることが知られている。従来、1つの条件又は他のものに基づき、第1トランザクションのアウトプットを償還するために、ターゲットトランザクションの1つのバージョンのみがこれまでに生成された。しかしながら、ここで、実際に2つのバージョン:条件のうちの第1条件に基づき第1トランザクションを償還するアンロックスクリプトを有する、ターゲットトランザクションの第1バージョン、及び条件のうちの第2条件に基づき第1トランザクションを償還する第2バージョン、が存在することが有用であると認識される。第2の更新バージョンは、第1バージョンを変更することにより、又はスクラッチから新鮮なバージョンを生成することにより、生成され得る。それら、並列に又は1つずつ存在し得る。両方のバージョンは第1トランザクションを有効に償還できないが、第1バージョンの存在は、第2条件を満たすために必要な環境が満たされていない場合に、Bobにとっての「バックアップ」として機能し得る。 The present disclosure recognizes further ways in which adaptability, or more generally updatability, can be utilized as a positive feature. In particular, it is known that a first transaction of a pair of transactions may include several different unlock conditions in its lock script. Conventionally, only one version of the target transaction has ever been created to redeem the output of the first transaction based on one condition or the other. However, it is now recognized that it is useful to actually have two versions: a first version of the target transaction with an unlock script that redeems the first transaction based on a first one of the conditions, and a second version that redeems the first transaction based on a second one of the conditions. The second updated version can be created by modifying the first version or by creating a fresh version from scratch. They can exist in parallel or one after the other. Although both versions cannot effectively redeem the first transaction, the existence of the first version can serve as a "backup" for Bob in case the circumstances required to satisfy the second condition are not met.

本願明細書に開示される一態様によると、ブロックチェーンに第1パーティと第2パーティとの間のターゲットトランザクションを記録する方法が提供される。当該方法は、第1パーティ又は第2パーティのコンピュータ機器により、
ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
前記第1バージョンの代わりに、ノードのネットワークを通じて伝播され、前記ノードのうちの少なくとも幾つかの各々において維持されているブロックチェーンのコピーに記録されるように、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、を含む。
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含む。前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される。
According to one aspect disclosed herein, there is provided a method for recording a target transaction between a first party and a second party on a blockchain, the method comprising:
obtaining a second updated version of the target transaction, the second updated version being updated relative to an existing first version of the target transaction;
and sending the updated version of the target transaction in place of the first version to be propagated through a network of nodes and recorded in a copy of the blockchain maintained at each of at least some of the nodes.
The target transaction includes an unlock script and a pointer to a first output of a first transaction, the first output including a lock script specifying a number of alternative conditions for unlocking the first output of the first transaction, the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script of the updated version is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

前記ターゲットトランザクションを含む複数のトランザクションの各々について、前記ネットワークの少なくとも幾つかのノードは、トランザクションが有効であることを条件として各トランザクションを伝播させ、少なくとも幾つかのノードは、トランザクションが有効であることを条件として、該ノードにおけるブロックチェーンのコピーに各トランザクションを記録するよう構成され、前記ターゲットトランザクションの有効性は、前記アンロックスクリプトが前記条件のうちのいずれか1つに従い前記第1トランザクションの前記アウトプットをアンロックすることを条件とするが、前記バージョンのうちの一方が任意の所与のノードにおいて検証されると、他方のバージョンが該ノードにおいて無効であると見なされる。 For each of a plurality of transactions including the target transaction, at least some nodes of the network are configured to propagate each transaction provided that the transaction is valid, and at least some nodes are configured to record each transaction in the node's copy of the blockchain provided that the transaction is valid, the validity of the target transaction being conditioned on the unlock script unlocking the output of the first transaction according to any one of the conditions, but whereby when one of the versions is validated at any given node, the other version is considered invalid at the node.

従って、両方のバージョンは第1トランザクションを有効に償還できないので、第2パーティ(「Bob」)は、伝播されブロックチェーンに記録されるよう両方のバージョンを送信しない。彼は、彼の好みで伝播され記録されるように第2バージョンを送信するが、第1バージョンが存在したという事実は、第2バージョンのための必要な環境が満たされなかった場合に、第1バージョンを記録させたというフォールバック(fall-back)を彼に与える。 Therefore, the second party ("Bob") does not submit both versions to be propagated and recorded on the blockchain, since neither version can validly redeem the first transaction. He submits the second version to be propagated and recorded as his preference, but the fact that the first version existed gives him a fall-back to have the first version recorded if the necessary circumstances for the second version were not met.

例えば、第1の例示的な使用例では、第1トランザクション(「Tx」)は、第2パーティ(「Bob」)により提供されるべきサービスに対する、第1パーティ(「Alice」)からの支払いを含む。第1トランザクションは、Alice、Bob、又は第三者により生成され得る。それは既にオンチェーンにあり、又はそこへ後に記録されるよう送信され得る。いずれの方法も、第1トランザクションのアウトプット内のロックスクリプトが、該アウトプット内で定義された支払いをアンロックするための少なくとも2つの代替条件、第1条件及び第2条件を指定する。第1条件は、Aliceの署名がターゲットトランザクションのアンロックスクリプトに含まれることを必要としないが、幾つかの他の煩わしい要件、例えばアンロックスクリプトが大きな所定のデータ片(これは、高いマイニング手数料を招き得る)又はBobの機密若しくは秘密データ片(これは、Bobがブロックチェーン上で公開したくない)を含むことをBobに課す。第2条件は、Aliceの署名がターゲットトランザクションのアンロックスクリプトに含まれることを要求するが、第1条件の煩わしい要件を課さない。 For example, in a first exemplary use case, a first transaction ("Tx 1 ") includes a payment from a first party ("Alice") for a service to be provided by a second party ("Bob"). The first transaction may be generated by Alice, Bob, or a third party. It may already be on-chain or may be submitted to be recorded there later. Either way, a locking script in the output of the first transaction specifies at least two alternative conditions for unlocking the payment defined in the output, a first condition and a second condition. The first condition does not require Alice's signature to be included in the unlocking script of the target transaction, but imposes some other onerous requirements on Bob, such as that the unlocking script include a large predefined piece of data (which may incur high mining fees) or a piece of Bob's confidential or secret data (which Bob does not want to expose on the blockchain). The second condition requires Alice's signature to be included in the unlocking script of the target transaction, but does not impose the onerous requirement of the first condition.

AliceがBobにターゲットトランザクションの第1バージョン(「Txp」)も提供するか、又はBobが彼自身でそれを生成する(若しくは、それは第三者により生成される)。第1バージョンは、第1条件に基づき第1トランザクションTxのアウトプットをアンロックするよう構成される。一方、第2バージョン(「Txp’」)は、第2条件に基づき、それをアンロックするよう構成される。次に、Bobは、サービスを提供する。Aliceが満足し誠実であるならば、それに応答して、彼女は、Bobに、彼女の署名を含む、ターゲットトランザクションの第2バージョンTxp’を提供する(又は第2バージョンを構成するために少なくとも彼女の署名をBob又は第三者に提供する)。しかしながら、Aliceが合意を破った場合には、Bobは、あまり好ましくない第1条件に基づき第1トランザクションのアウトプットを償還するために、既存の、あまり好ましくない第1バージョンTxpを送信するというオプションを有している。 Alice also provides Bob with a first version of the target transaction ("Tx p "), or Bob generates it himself (or it is generated by a third party). The first version is configured to unlock the output of the first transaction Tx 1 under a first condition, while the second version ("Tx p '") is configured to unlock it under a second condition. Bob then provides the service. If Alice is happy and honest, in response, she provides Bob with the second version of the target transaction Tx p ', including her signature (or provides at least her signature to Bob or a third party to construct the second version). However, if Alice breaks the agreement, Bob has the option of sending the existing, less favorable first version Tx p to redeem the output of the first transaction under the less favorable first condition.

第2の例示的な使用例では、当該方法は、前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大する。このような実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の最終部分に続いて、第1パーティから更新バージョンを受信するステップを含む。
In a second exemplary use case, the method includes, by the second party's computing device:
streaming a sequence of data portions to the first party, terminating with a final portion in the sequence;
receiving a respective instance of the first transaction from the first party in response to a respective one of the data portions, a first output of each instance specifying a payment to the second party for the respective portion;
wherein the payment increases with each data portion. In such an embodiment, obtaining the updated version of the target transaction includes receiving an updated version from a first party following a final portion in the sequence.

例えば、各データ部分は、メディアコンテンツ(例えば、オーディオ及び/又はビデオコンテンツ)のアイテムの異なる部分であってよい。代替として、各データ部分は、サービスのユニット(例えば、ガス、水道、電気のような生活必需サービス、又は車両、不動産、又は他の物理的オブジェクトのレンタル)にアクセスするための異なる鍵である。 For example, each data portion may be a different portion of an item of media content (e.g., audio and/or video content). Alternatively, each data portion is a different key to access a unit of service (e.g., a consumer service such as gas, water, electricity, or the rental of a vehicle, property, or other physical object).

例えば、第1アウトプットが各インスタンスの中に同じアウトプット識別子(例えば、UTXO識別子)を有するので、第1トランザクションのインスタンス(Tx,Tx,Tx,…)は、ネットワークの各ノードにより、実質的に同じトランザクションのインスタンスとして認識されてよい。従って、1つのインスタンスのみが、ブロックチェーンに記録できる。1つのインスタンスが任意の所与のノードにより有効であるとして受け入れられると、更なるバージョンを記録しようとする任意の試みは、無効であると見なされ、従って該ノードにより拒否される。更に、第1トランザクションのインスタンスのうちの1つがターゲットトランザクションのバージョンのうちの1つ(Txp又はTxp’)により有効に償還されることが、任意の所与のノードにより分かると、第1トランザクションの任意のインスタンスを償還しようとする任意の更なるターゲットトランザクションは、該ノードにより無効であると見なされ、従って、該ノードにより伝播されず、ブロックチェーンに記録されることもない。 For example, the first transaction instances ( Tx1 , Tx2 , Tx3 , ...) may be recognized by each node of the network as substantially the same transaction instance, because the first output has the same output identifier (e.g., UTXO identifier) in each instance. Thus, only one instance can be recorded in the blockchain. Once one instance is accepted as valid by any given node, any attempt to record a further version is considered invalid and thus rejected by the node. Furthermore, once any given node knows that one of the first transaction instances is validly redeemed by one of the target transaction versions ( Txp or Txp '), any further target transaction that attempts to redeem any instance of the first transaction is considered invalid by that node and thus will not be propagated by that node and will not be recorded in the blockchain.

ターゲットトランザクションの任意のバージョン(Txp又はTxp’)は実質的に同じ第1トランザクションのインスタンス(単に異なる額を定義する)の同じアウトプットIDを指すので、1つのターゲットトランザクションのみが、該アウトプットを有効に償還できる。第1トランザクションのインスタンスのうちの1つ(Tx,Tx,Tx,…)がターゲットトランザクションのバージョンのうちの1つ(Txp又はTxp’)により有効に償還されることが、任意の所与のノードにおいて分かると、第1トランザクションの任意のインスタンスを償還しようとする任意の更なるターゲットトランザクションは、無効であると見なされ、従って、該ノードにより伝播されず、ブロックチェーンに記録されることもない。しかしながら、各インスタンスの中の支払いも、データの各部分と引き換えに増大するので、第2パーティ(「Bob」)が行わなければならないことは、第1トランザクションの最後の又は最近のインスタンスTxnを償還するターゲットトランザクションのバージョンTxp’を送信して、伝播させブロックチェーンに記録することである。彼は、次に、トランザクションの単一のペアに基づき、その時点前に送信されたデータの全部の部分についての完全な支払いを受け取る。代わりに、第1パーティ(「Alice」)がデータの各個別部分(例えば、オーディオ又はビデオコンテンツの各パケット又はチャンク)についての別個の個別支払いを送信する場合、Bobは各データ部文意ついて別個のトランザクションを送信しなければならないので、これは、ブロックチェーンを膨大にし、より多くのネットワークトラフィックをもたらすだろう。 Since any version of the target transaction (Tx p or Tx p ') points to the same output ID of the same instance of the first transaction (which simply defines a different amount), only one target transaction can validly redeem the output. Once any given node knows that one of the instances of the first transaction (Tx 1 , Tx 2 , Tx 3 , ...) is validly redeemed by one of the versions of the target transaction (Tx p or Tx p '), any further target transaction that attempts to redeem any instance of the first transaction will be considered invalid and will therefore not be propagated by the node and recorded in the blockchain. However, since the payment in each instance also grows with each piece of data exchanged, all the second party ("Bob") has to do is to send a version of the target transaction Tx p ' that redeems the last or most recent instance Tx n of the first transaction, to be propagated and recorded in the blockchain. He then receives a full payment for every piece of data sent before that point, based on a single pair of transactions. If the first party ("Alice") instead sent a separate individual payment for each separate portion of data (e.g., each packet or chunk of audio or video content), Bob would have to send a separate transaction for each data portion, which would bloat the blockchain and result in more network traffic.

任意の時点で、シーケンスの終了の前に、Aliceが第1トランザクションのインスタンス(Tx,Tx,Tx,…)の送信を停止した場合、その時点より前に送信されたデータ部分についての支払いを償還するために(従って、送信された最新のデータ部分のみを失う)、Bobは、Aliceへの更なるデータ部分の送信を停止し、ターゲットトランザクションの第1バージョンTxpをネットワークへ送信するオプションを依然として有する。反対に、任意の時点で、Bobがデータ部分の送信を停止した場合、Aliceは、第1トランザクションの更なるインスタンスTxの送信を停止するオプションを有し、Bobは、それまでにAliceにより受信されたデータ部分に対する支払いを償還する能力のみを受けるだろう。 If at any point, prior to the end of the sequence, Alice stops sending instances of the first transaction ( Tx1 , Tx2 , Tx3 , ...), Bob still has the option to stop sending further data portions to Alice and send the first version of the target transaction Txp to the network in order to redeem the payment for the data portion sent before that point (thus losing only the most recent data portion sent). Conversely, if at any point, Bob stops sending data portions, Alice has the option to stop sending further instances of the first transaction Tx1 and Bob will only have the ability to redeem the payment for the data portion received by Alice up to that point.

特に任意的な実装では、第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含んでよく、第1トランザクションの第1アウトプットは第1支払いを指定してよく、第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを更に含んでよい。その結果、支払いの合計はインプット額より高く、第1パーティから第2パーティにより受信される第1トランザクションは、差分を生成する他のインプットを有しない。ネットワークのノードは、第1トランザクションが合計インプット額より多くの合計支払いを指定する場合、第1トランザクションを無効であるとして拒否する。このような実施形態では、当該方法は、差分を構成する(make up)ために、第2パーティが第2インプットを第1トランザクションの最終又は最近のインスタンスに追加するステップと、追加された第2インプットを有する第1トランザクションを、ネットワークを通じて伝播されブロックチェーンに記録されるよう送信するステップと、を含む。 In a particularly optional implementation, the first transaction may include one or more first inputs specifying an input amount, the first output of the first transaction may specify a first payment, and the first transaction may further include one or more further outputs specifying one or more further payments. As a result, the sum of the payments is higher than the input amount, and the first transaction received by the second party from the first party has no other inputs that generate a difference. The nodes of the network reject the first transaction as invalid if the first transaction specifies a total payment that is greater than the total input amount. In such an embodiment, the method includes the second party adding a second input to the last or most recent instance of the first transaction to make up the difference, and sending the first transaction with the added second input to be propagated through the network and recorded in the blockchain.

この例示的な実装として、更なるアウトプットは、インプット額から第1支払いを差し引いたものに等しい、第1パーティへの第2支払いを指定する第2アウトプットと、第2支払いに等しい、第2パーティへの第3支払いを指定する第3アウトプットと、を含む。 In this exemplary implementation, the further outputs include a second output specifying a second payment to the first party equal to the input amount minus the first payment, and a third output specifying a third payment to the second party equal to the second payment.

このような実施形態は、第1パーティ(「Alice」)が、先のインスタンスのうちの1つを償還するために彼女自身のターゲットトランザクションを送り出すことによりシステムを騙すことを防止し、従って、Bobが後のインスタンスのうちの1つ(又は実際にインスタンスのうちのいずれか)を償還することを防止する。そうすることにより、Aliceは、彼女のデジタルアセットの多くを負担する余分なインプットを追加しなければならないからである。従って、Aliceがシステムを騙そうとすることに価値がない。 Such an embodiment would prevent a first party ("Alice") from cheating the system by submitting her own target transaction to redeem one of the earlier instances, and thus prevent Bob from redeeming one of the later instances (or indeed any of the instances). By doing so, Alice would have to add an extra input that would cost her much of her digital assets. Thus, there is no value in Alice trying to cheat the system.

別の例示的な使用例では、前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応してよく、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。投票の指示が実際に投票に変換されなかった場合、第1バージョンは、投票が最終的な投票結果とどれくらい異なったかの公開された指示として残る。
In another example use case, each of at least some of the alternative conditions may correspond to a different option for voting;
The method may include, prior to obtaining the updated version of the target transaction, marking the unlock script in the first version as accessible or accessible by a third party as a non-binding indication of voting intent, where if the voting indication is not actually converted into a vote, the first version remains as a public indication of how the vote differed from the final voting outcome.

本願明細書に開示される更なる態様によると、方法を実行するためのプログラム、及び/又は方法を実行するようプログラミングされた第2パーティのコンピュータ機器が提供される。プログラム又はコンピュータ機器は、第2パーティが、いずれかのバージョンを選択する手動オプションを提供することにより、及び/又は第1イベントにより第1バージョンを自動的に送信するよう構成され及び第2イベントにより第2バージョンの代わりに伝播され記録されるように第2バージョンを自動的に送信するよう更に構成される自動機能により、ネットワークを通じて伝播されブロックチェーンに記録されるように、第1バージョン又は第2バージョンのいずれかを選択的に送信できるように構成されてよい。 According to further aspects disclosed herein, a program for performing the method and/or a second party computer device programmed to perform the method is provided. The program or computer device may be configured to allow the second party to selectively transmit either the first or second version to be propagated through the network and recorded in the blockchain by providing a manual option to select either version and/or by an automated function configured to automatically transmit the first version upon a first event and further configured to automatically transmit the second version upon a second event to be propagated and recorded instead of the second version.

本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。 ブロックチェーンに記録されるトランザクションのいくつかの例を概略的に示している。 ブロックチェーンを実装するための別のシステムの概略ブロック図である。 クライアントアプリケーションの概略ブロック図である。 図4のクライアントアプリケーションにより提示される例示的なユーザインタフェースの概略的模擬表示である。 トランザクションのセットの概略図である。 データをストリーミングする方法のフローチャートである。 図7の方法の例示的な実装における第1トランザクションのインスタンスのインプット及びアウトプットの値を示すグラフである。 投票方法を示すシグナリング図である。 投票方法を示すシグナリング図である。 図10の方法を実施するトランザクションの例示的なセットを示す。
To aid in the understanding of embodiments of the present disclosure and to show how such embodiments may be put into effect, reference is made, by way of example only, to the accompanying drawings in which:
FIG. 1 is a schematic block diagram of a system for implementing a blockchain. 1 shows a schematic of some examples of transactions that may be recorded on a blockchain. FIG. 1 is a schematic block diagram of another system for implementing a blockchain. FIG. 2 is a schematic block diagram of a client application. 5 is a schematic, simulated representation of an exemplary user interface presented by the client application of FIG. 4; FIG. 2 is a schematic diagram of a set of transactions. 1 is a flow chart of a method for streaming data. 8 is a graph illustrating input and output values for an instance of a first transaction in an exemplary implementation of the method of FIG. 7; FIG. 1 is a signaling diagram illustrating a voting method. FIG. 1 is a signaling diagram illustrating a voting method. 11 illustrates an exemplary set of transactions implementing the method of FIG. 10 .

適応性は、暗号法において既存の概念である。これは、通常、セキュリティ関心事を支え、それによりメッセージが悪意を持って変更され得るが、依然として真正であるとして受け入れられる。デジタル署名方式は、この関心事を解決するために設計される。ブロックチェーンでは、しかしながら、適応性は、トランザクションを全体として無効にすることなく、トランザクションの少なくとも部分を変更する能力を表す。関連する形式の暗号署名(例えば、ECDSA署名)により署名されるトランザクション内の任意の情報は、適応(malleation)の可能性の影響を受けない。適応性に関連する任意の請求リティ関心事は、代わりに、プロトコル自体ではなく、不適切な実装により引き起こされる。 Malleability is an existing concept in cryptography. It usually underpins a security concern whereby a message can be maliciously altered and still be accepted as authentic. Digital signature schemes are designed to address this concern. In blockchain, however, malleability represents the ability to modify at least parts of a transaction without invalidating the transaction as a whole. Any information in a transaction that is signed with a related form of cryptographic signature (e.g., an ECDSA signature) is not subject to the possibility of malleation. Any claimability concerns related to malleability are instead caused by improper implementations, not the protocol itself.

以下は、速くセキュアな信頼不要の(trustless)支払いチャネルを実現するための有用な特徴として利用する。思想は、(例えば、ECDSA署名により)署名されない又はされる必要のないトランザクション内の1つ又は複数の部分を識別することである。開示の方式は、トランザクションの各インプットのアンロックスクリプト内の任意のコンテンツ(例えば「scriptSig」フィールド)が任意の署名により署名されていないという事実を利用する。実施形態は、トランザクションを無効にすることなく該トランザクションを柔軟に変更することを可能にするために、SIGHASHフラグも利用してよい。 The following are exploited as useful features to achieve a fast and secure trustless payment channel. The idea is to identify one or more parts in a transaction that are not or do not need to be signed (e.g., with an ECDSA signature). The disclosed scheme exploits the fact that any content in the unlock script (e.g., the "scriptSig" field) of each input of a transaction is not signed with any signature. Embodiments may also exploit the SIGHASH flag to allow flexibility in modifying a transaction without invalidating it.

例は以下の通りである。ブロックチェーン上でデータを交換するとき、1つの一般的な方法は、データの開示及び支払いの受け入れが同時に生じることを強制するために、ハッシュパズルを使用することである。これを回避するために、トランザクションは、支払いが2つの条件:(i)「データ+Bobの署名」を提供すること、又は(ii)「Aliceの署名+Bobの署名」を提供すること、のうちのいずれかにより請求できるように、構成できる。 An example is as follows: When exchanging data on a blockchain, one common method is to use a hash puzzle to force the disclosure of the data and the acceptance of payment to occur simultaneously. To avoid this, transactions can be constructed such that payment can be demanded by one of two conditions: (i) providing "data + Bob's signature" or (ii) providing "Alice's signature + Bob's signature".

Bobは、データ及び彼の署名を提供することにより資金を請求するためのトランザクションを構成し、それをAliceへ送信する。Aliceは、次に、データを彼女の署名で置き換え、トランザクションをネットワークへブロードキャストする。代替として、BobはAliceの署名を取得し、それでデータを置き換え、ネットワークにブロードキャストする。いずれの方法でも、データはBobの署名により署名されたメッセージの部分ではないので、それをAliceの署名で置き換えることは、トランザクションを無効にしない。更に、トランザクションは、インプットが条件(ii)を満たすとき、有効のままである。Aliceがトランザクションをネットワークへブロードキャストせず、彼女の署名を提供しない場合、Bobは、条件(i)(これは、彼が相当量の及び/又は独自のデータをアップロードしなければならないので、あまり好ましくない)に基づき資金を請求するために、元のトランザクションをブロードキャストするオプションを依然として有する。Aliceは、肯定すべき要件、割引の動機付け、又はサービスが良好に実行されたことに対してBobに報酬を与えることにより、彼女の署名を提供することを奨励されてよい。 Bob constructs a transaction to claim funds by providing the data and his signature, and sends it to Alice. Alice then replaces the data with her signature and broadcasts the transaction to the network. Alternatively, Bob obtains Alice's signature, replaces the data with it, and broadcasts it to the network. Either way, since the data is not part of the message signed by Bob's signature, replacing it with Alice's signature does not invalidate the transaction. Furthermore, the transaction remains valid when the inputs satisfy condition (ii). If Alice does not broadcast the transaction to the network and does not provide her signature, Bob still has the option to broadcast the original transaction to claim funds under condition (i) (which is less preferred since he would have to upload a significant amount of and/or unique data). Alice may be incentivized to provide her signature by a requirement to be affirmed, an incentive of a discount, or by rewarding Bob for a service well performed.

<システム概要>
図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つ以上のメモリユニットを含んでもよい。
<System Overview>
FIG. 1 illustrates an exemplary system 100 for implementing a blockchain 150. The system 100 includes a packet-switched network 101, which is typically a wide area internetwork such as the Internet. The packet-switched network 101 includes a number of nodes 104 arranged to form a peer-to-peer (P2P) overlay network 106 within the packet-switched network 101. Each node 104 includes a peer computing device with different nodes 104 belonging to different peers. Each node 104 includes a processing device including one or more processors, e.g., one or more central processing units (CPUs), accelerator processors, application specific processors, and/or field programmable gate arrays (FPGAs). Each node also includes a memory, i.e., a computer readable storage device in the form of one or more non-transitory computer readable media. The memory may include one or more memory units using one or more memory media, e.g., magnetic media such as hard disks, electronic media such as solid-state drives (SSDs), flash memory or EEPROMs, and/or optical media such as optical disk drives.

ブロックチェーン150は、データのブロック151のチェーンを指し、ブロックチェーン150のそれぞれのコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク160内の複数のノードのそれぞれにおいて維持される。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、この文脈ではトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、そのアウトプットが暗号的にロックされている(アンロックされ、それによって償還又は使用されるために、そのユーザ103の署名を必要とする)ユーザに属するデジタルアセットの数量を表す額(amount)を指定する。各インプットは、先行するトランザクション152のアウトプットを逆にポイントし、それによってトランザクションをリンクする。 Blockchain 150 refers to a chain of blocks 151 of data, with a respective copy of blockchain 150 maintained at each of multiple nodes in a peer-to-peer (P2P) network 160. Each block 151 in the chain contains one or more transactions 152, where transaction in this context refers to a type of data structure. The nature of the data structure depends on the type of transaction protocol used as part of the transaction model or scheme. A given blockchain typically uses one particular transaction protocol throughout. In one common type of transaction protocol, the data structure of each transaction 152 includes at least one input and at least one output. Each output specifies an amount that represents the quantity of a digital asset belonging to the user for which that output is cryptographically locked (requiring the signature of that user 103 to be unlocked and thereby redeemed or used). Each input points back to the output of the preceding transaction 152, thereby linking the transactions.

ノード104の少なくとも幾つかは、トランザクション152を転送し、それによって伝播する転送ノード104Fの役割を引き受ける。ノード104の少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を担う。ノード104の少なくとも幾つかは、記憶ノード104S(「フル(full-copy)」ノードとも呼ばれる)の役割を引き受け、各ノードは、それぞれのメモリに同じブロックチェーン150のそれぞれのコピーを格納する。各マイナーノード104Mは、マイニングされてブロック151にされることを待ってるトランザクション152のプール154も維持する。所与のノード104は、転送ノード104、マイナー104M、記憶ノード104S、又はこれらの2つ若しくは全部の任意の組み合わせであり得る。 At least some of the nodes 104 take on the role of forwarding nodes 104F, which forward and thereby propagate transactions 152. At least some of the nodes 104 take on the role of miners 104M, which mine blocks 151. At least some of the nodes 104 take on the role of storage nodes 104S (also called "full-copy" nodes), with each node storing a respective copy of the same blockchain 150 in its respective memory. Each miner node 104M also maintains a pool 154 of transactions 152 waiting to be mined into blocks 151. A given node 104 may be a forwarding node 104, a miner 104M, a storage node 104S, or any combination of two or all of these.

所与の現在のトランザクション152jにおいて、インプット(又はそのそれぞれ)は、トランザクションのシーケンスの中の先行トランザクション152iのアウトプットを参照するポインタを含み、このアウトプットが現在のトランザクション152jにおいて償還されるか又は「消費される(spent)」ことを指定する。一般に、先行するトランザクションは、プール154又は任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、必ずしも、現在のトランザクション152jが生成された又はネットワーク106へ送信されたときに存在する必要はないが、先行するトランザクション152iは、現在のトランザクションが結う意向であるために存在し検証されている必要がある。従って、本願明細書で「先行する」は、ポインタによりリンクされた論理的シーケンスの中で先行するものを表し、必ずしも時系列の中での生成又は送信の時間を表さない。従って、それは、必ずしも、トランザクション152i,152jが順不同で生成され又は送信されることを排除しない(以下の親のない(orphan)トランザクションに関する議論を参照する)。先行するトランザクション152iは、等しく、祖先(antecedent)又は先行(predecessor)トランザクションと呼ばれ得る。 For a given current transaction 152j, the input (or each of them) includes a pointer that references the output of a previous transaction 152i in the sequence of transactions, and specifies that this output is redeemed or "spent" in the current transaction 152j. In general, the previous transaction can be any transaction in the pool 154 or any block 151. The previous transaction 152i does not necessarily have to exist when the current transaction 152j is created or sent to the network 106, but the previous transaction 152i must exist and be verified in order for the current transaction to be concluded. Thus, "preceding" in this specification refers to something that precedes in a logical sequence linked by a pointer, and not necessarily to a time of creation or transmission in the chronological order. Thus, it does not necessarily exclude transactions 152i, 152j from being created or transmitted out of order (see the discussion of orphan transactions below). A preceding transaction 152i may equally be referred to as an antecedent or predecessor transaction.

現在のトランザクション152jのインプットは、先行するトランザクション152iのアウトプットがロックされているユーザ103aの署名も含む。また、現在のトランザクション152jのアウトプットは、新しいユーザ103bに暗号的にロックできる。従って、現在のトランザクション152jは、先行するトランザクション152iのインプットで定義された量を、現在のトランザクション152jのアウトプットで定義された新しいユーザ103bに移転することができる。幾つかの場合には、トランザクション152が複数のアウトプットを有し、複数のユーザ間でインプット量を分割してよい(変更を行うために、そのうちの1人がオリジナルユーザとなる)。場合によっては、トランザクションが複数のインプットを有し、1つ以上の先行するトランザクションの複数のアウトプットから量をまとめ、現在のトランザクションの1つ以上のアウトプットに再分配することもできる。 The input of the current transaction 152j also includes the signature of the user 103a to which the output of the previous transaction 152i is locked. The output of the current transaction 152j can also be cryptographically locked to the new user 103b. Thus, the current transaction 152j can transfer an amount defined in the input of the previous transaction 152i to the new user 103b defined in the output of the current transaction 152j. In some cases, a transaction 152 may have multiple outputs and split the input amount among multiple users (one of which is the original user to make the change). In some cases, a transaction may have multiple inputs and pool amounts from multiple outputs of one or more previous transactions and redistribute them into one or more outputs of the current transaction.

上記は「アウトプットベースの」トランザクションプロトコルと呼ばれることがあり、時には「未使用のトランザクションアウトプット(unspent transaction output (UTXO))タイプのプロトコル」(アウトプットはUTXOと呼ばれる)とも呼ばれる。ユーザの合計残高は、ブロックチェーンに格納されている1つの数値で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152に分散されている該ユーザのすべてのUTXOの値を照合するために、特別な「ウォレット」アプリケーション105を必要とする。 The above is sometimes called an "output-based" transaction protocol, and sometimes also called an "unspent transaction output (UTXO) type protocol" (where the outputs are called UTXOs). A user's total balance is not defined by a single number stored in the blockchain, instead, the user needs a special "wallet" application 105 to collate the values of all of the user's UTXOs, which are distributed across many different transactions 152 in the blockchain 151.

アカウントベースのトランザクションモデルの一部として、別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって格納され、絶えず更新される。本開示は、アカウントに基づくのではなくアウトプットに基づくモデルに関する。 As part of the account-based transaction model, another type of transaction protocol is sometimes called an "account-based" protocol. With account-based, each transaction transfers by referencing absolute account balances, rather than defining the amount to be transferred by referencing back to the UTXOs of previous transactions in the past series of transactions. The current state of all accounts is stored and constantly updated by miners separate from the blockchain. This disclosure is directed to an output-based model rather than an account-based one.

どちらのタイプのトランザクションプロトコルでも、ユーザ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のネットワーク全体に伝播される。 In both types of transaction protocols, when a user 103 wants to execute a new transaction 152j, he sends the new transaction from his computer terminal 102 to one of the nodes 104 of the P2P network 106 (currently usually a server or a data center, but in principle it could be another user terminal). This node 104 checks whether the transaction is valid according to a node protocol applied to each node 104. The details of the node protocol correspond to the type of transaction protocol used in the blockchain 150 in question and together form an overall transaction model. The node protocol typically requires the nodes 104 to check that the cryptographic signature in the new transaction 152j matches an expected signature, which depends on the previous transaction 152i in the ordered sequence of transactions 152. In the output-based case, this may include checking that the cryptographic signature of the user included in the input of the new transaction 152j matches a condition defined in the output of the previous transaction 152j that the new transaction consumes, which typically includes at least checking that the cryptographic signature in the input of the new transaction 152j unlocks the output of the previous transaction 152i to which the input of the new transaction points. In some transaction protocols, the condition may be defined, at least in part, by a custom script included in the input and/or output. Alternatively, it may be fixed solely in the node protocol, or by a combination of these. In any case, if the new transaction 152j is valid, the current node forwards the new transaction to one or more other nodes 104 in the P2P network 106. At least some of these nodes 104 also act as forwarding nodes 104F, applying the same tests according to the same node protocol and forwarding the new transaction 152j to one or more further nodes 104, etc. In this way, the new transaction is propagated throughout the network of nodes 104.

アウトプットベースのモデルでは、与えられたアウトプット(例えば、UTXO)が消費されるかどうかの定義は、ノードプロトコルに従って別の今後の(onward)トランザクション152jのインプットによって既に有効に償還されているかどうかである。トランザクションが有効であるための別の条件は、それが消費又は償還を試みる先行するトランザクション152iのアウトプットが、別の有効なトランザクションによって未だ消費/償還されていないことである。ここでも、有効でない場合、トランザクション152jは、ブロックチェーンに伝播又は記録されない。これは、支払者が同じトランザクションのアウトプットを複数回消費しようとする二重支出を防ぐ。 In an output-based model, the definition of whether a given output (e.g., a UTXO) is spent is whether it has already been validly redeemed by an input of another onward transaction 152j according to the node protocol. Another condition for a transaction to be valid is that the output of a preceding transaction 152i that it attempts to spend or redeem has not yet been consumed/redeemed by another valid transaction. Again, if it is not valid, the transaction 152j is not propagated or recorded on the blockchain. This prevents double-spending, where a payer attempts to spend the same transaction's output multiple times.

検証に加えて、ノード104Mのうちの少なくともいくつかは、「proof of work」に支えられているマイニングと呼ばれるプロセスで、トランザクションのブロックを最初に作成するために競合する。マイニングノード104Mでは、まだブロックに現れていない有効なトランザクションのプールに新しいトランザクションが追加される。そして、マイナーは、暗号パズルを解決しようと試みることにより、トランザクションのプール154からトランザクション152の新しい有効なブロック151を組み立てるために競争する。これは、典型的には、ノンスがトランザクションのプール154と連結され、ハッシュされるときに、ハッシュのアウトプットが所定の条件を満たすような「ノンス」値を探すことを含む。例えば、所定の条件は、ハッシュのアウトプットが、所定の数の先行ゼロを有することであってもよい。ハッシュ関数の特性は、インプットに関して予測不可能なアウトプットを持つことである。従って、この探索は、ブルートフォースによってのみ実行することができ、従って、パズルを解決しようとしている各ノード104Mにおいて、相当量の処理リソースを消費する。 In addition to validating, at least some of the nodes 104M compete to be the first to create a block of transactions in a process called mining, which is backed by a "proof of work". At the mining nodes 104M, new transactions are added to a pool of valid transactions that have not yet appeared in a block. Miners then compete to assemble a new valid block 151 of transactions 152 from the pool of transactions 154 by attempting to solve a cryptographic puzzle. This typically involves searching for a "nonce" value such that when the nonce is concatenated with the pool of transactions 154 and hashed, the output of the hash satisfies a predefined condition. For example, the predefined condition may be that the output of the hash has a predefined number of leading zeros. A property of a hash function is that it has an output that is unpredictable with respect to the input. This search can therefore only be performed by brute force and therefore consumes a significant amount of processing resources at each node 104M trying to solve the puzzle.

パズルを解く最初のマイナーノード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で順序付けられたブロックに記録されるので、これはトランザクションの不変の公開台帳を提供する。 The first miner node 104M to solve the puzzle announces this to the network 106 and provides its solution as a proof. This solution can be easily checked by other nodes 104 in the network (given the solution for the hash, it is easy to verify that the hash output satisfies the conditions). The winner's pool of puzzle-solving transactions 154 is recorded as a new block 151 in the blockchain 150 by at least some of the nodes 104 acting as storage nodes 104S, based on checking the winner's published solution at each node. The new block 151n is also assigned a block pointer 155, which points to the previously created block 151n-1 in the chain. The proof-of-work helps to reduce the risk of double spending, since it takes a lot of effort to create a new block 151, and blocks containing double spending are likely to be rejected by other nodes 104, thus providing an incentive for mining nodes 104M not to include double spending in their blocks. Once created, blocks 151 cannot be altered because they are known and maintained at each storage node 104S in the P2P network 106 according to the same protocol. Block pointers 155 also impose an order on blocks 151. This provides an immutable public ledger of transactions, as transactions 152 are recorded in ordered blocks at each storage node 104S in the P2P network 106.

パズルを解決するために常に競争している異なるマイナー104Mは、いつ解を探し始めたかによって、いつでもマイニングされていないトランザクションプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、現在のマイニングされていないトランザクションのプール154が更新される。そして、マイナー104Mは、新たに定義された未解決のプール154からブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2人のマイナー104Mが互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾したビューが伝播する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。 Note that different miners 104M, who are constantly competing to solve the puzzle, may be solving the puzzle based on different snapshots of the unmined transaction pool 154 at any given time, depending on when they started looking for a solution. Whoever solves the puzzle first defines the transactions 152 to be included in the next new block 151n, and the current unmined transaction pool 154 is updated. Miners 104M then continue to compete to produce blocks from the newly defined unsolved pool 154. There is also a protocol to resolve possible "forks", which are cases when two miners 104M solve the puzzle within a very short time of each other and inconsistent views of the blockchain propagate. In essence, whenever a branch of a fork grows, the longest one becomes the final blockchain 150.

ほとんどのブロックチェーンでは、勝ったマイナー104Mは、何も無いものから新しい量のデジタルアセットを生み出す特別な種類の新しいトランザクションによって自動的に報酬を受けている(通常のトランザクションでは、あるユーザから別のユーザにデジタルアセットの額を移転する)。したがって、勝ったノードは、ある量のデジタルアセットを「マイニング」したと言われる。この特殊なタイプのトランザクションは「生成(generation)」トランザクションと呼ばれることもある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがproof-of-work競争に参加するインセンティブを与える。多くの場合、通常の(非生成)トランザクションは、そのトランザクションが含まれたブロック151nを生成した勝ったマイナー104Mにさらに報酬を与えるために、追加のトランザクション手数料をそのアウトプットの1つにおいて指定する。 In most blockchains, the winning miner 104M is automatically rewarded with a special type of new transaction that creates a new amount of digital assets out of nothing (a normal transaction transfers an amount of digital assets from one user to another). The winning node is therefore said to have "mined" an amount of digital assets. This special type of transaction is sometimes called a "generation" transaction; it automatically forms part of a new block 151n. This reward gives miners 104M an incentive to participate in proof-of-work competitions. Often, normal (non-generation) transactions specify an additional transaction fee in one of their outputs to further reward the winning miner 104M who generated the block 151n in which the transaction was included.

マイニングに含まれる計算リソースのために、典型的には、少なくともマイナーノード104Mの各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。各転送ノード104M及び/又は記憶ノード104Sは、サーバ又はデータセンタの形態をとることもできる。しかしながら、原則として、任意の所与のノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末のグループを含むことができる。 Due to the computational resources involved in mining, typically at least each of the miner nodes 104M takes the form of a server including one or more physical server units, or an entire data center. Each forwarding node 104M and/or storage node 104S may also take the form of a server or a data center. However, in principle, any given node 104 may include a user terminal or a group of user terminals networked together.

各ノード104のメモリは、それぞれの1つ以上の役割を実行し、ノードプロトコルに従ってトランザクション152を処理するために、ノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ノード104に属するいずれの動作も、それぞれのコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。 The memory of each node 104 stores software configured to run on the processing unit of the node 104 to perform one or more of its respective roles and to process transactions 152 in accordance with the node protocol. It will be understood that any operation attributed to a node 104 may be performed by software executing on the processing unit of the respective computing device. Additionally, the term "blockchain" as used herein is a general term referring to a general type of technology and is not limited to any particular proprietary blockchain, protocol or service.

また、ネットワーク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パーティ」と置き換えることができることは理解されるであろう。 Also connected to the network 101 are computing devices 102 of each of a number of parties 103 acting as consumer users. These play the role of payer and payee in a transaction, but do not necessarily participate in mining or propagating the transaction on behalf of the other parties. They do not necessarily execute the mining protocol. Two parties 103 and their respective devices 102 are shown for illustrative purposes: a first party 103a and its respective computing device 102a, and a second party 103b and its respective computing device 102b. It will be understood that many more such parties 103 and their respective computing devices 102 may exist and participate in the system, but for convenience they are not shown. Each party 103 may be an individual or an organization. Purely by way of example, the first party 103a is referred to herein as Alice and the second party 103b is referred to as Bob, but it will be understood that this is not limiting and that references herein to Alice or Bob may be substituted with "first party" and "second party", respectively.

各パーティ103のコンピュータ機器102は、1つ以上のプロセッサ、例えば1つ以上のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はFPGAを備えるそれぞれの処理装置を備える。各パーティ103のコンピュータ機器102は、さらに、メモリ、すなわち、非一時的コンピュータ読取可能媒体又は媒体の形態のコンピュータ読取可能記憶装置を備える。このメモリは、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。各パーティ103のコンピュータ機器102上のメモリは、処理装置上で動作するように配置された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。所与のノード104に属するいずれの動作も、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用することにより実行され得ることが理解されよう。各パーティ103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えばデスクトップ又はラップトップコンピュータ、タブレット、スマートフォン、又はスマートウォッチのようなウェアラブルデバイスを備えている。所与のパーティ103のコンピュータ装置102は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースのような、1つ以上の他のネットワーク接続されたリソースを含んでもよい。 Each party's 103 computing equipment 102 comprises a respective processing device comprising one or more processors, for example one or more CPUs, GPUs, other accelerator processors, application specific processors, and/or FPGAs. Each party's 103 computing equipment 102 further comprises a memory, i.e. a computer readable storage device in the form of a non-transitory computer readable medium or media. This memory may include one or more memory units using, for example, a magnetic medium such as a hard disk, an electronic medium such as an SSD, a flash memory or an EEPROM, and/or an optical medium such as an optical disk drive. The memory on each party's 103 computing equipment 102 stores software including a respective instance of at least one client application 105 arranged to operate on the processing device. It will be understood that any operation belonging to a given node 104 may be performed by using software executed on the processing device of the respective computing equipment 102. Each party's 103 computing equipment 102 comprises at least one user terminal, for example a desktop or laptop computer, a tablet, a smartphone, or a wearable device such as a smart watch. The computing device 102 of a given party 103 may also include one or more other network-connected resources, such as cloud computing resources accessed via a user terminal.

クライアントアプリケーション又はソフトウェア105は、最初に、1つ以上の適切なコンピュータ読取可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。 The client application or software 105 may be initially provided to the computing equipment 102 of any given party 103 on one or more suitable computer readable storage media, for example downloaded from a server, or on a removable storage device such as a removable SSD, a flash memory key, a removable EEPROM, a removable magnetic disk drive, a magnetic floppy disk or tape, an optical disk, for example a CD or DVD ROM, or a removable optical drive.

クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、それぞれのユーザパーティ103が、ノード104のネットワーク全体にわたって伝播され、それによってブロックチェーン150に含まれるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの額をそれぞれのパーティに報告することである。アウトプットベースのシステムでは、この第2の機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。 The client application 105 has at least a "wallet" functionality. It has two main functions. One of these is to allow each user party 103 to create, sign and send transactions 152 that are propagated throughout the network of nodes 104 and thereby included in the blockchain 150. The other is to report to each party the amount of digital assets it currently owns. In an output-based system, this second function involves matching an amount defined among the outputs of the various transactions 152 scattered throughout the blockchain 150 that belong to that party.

各コンピュータ機器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によって使用される(ただし、多くのノードは、そのサブタイプに対して定義されたルールに従って異なるトランザクションのサブタイプを異なるように処理し、また、異なるノードは異なる役割を引き受け、従って、プロトコルの異なる対応する側面を実装することができる)。 An instance of the client application 105 on each computing device 102 is operatively coupled to at least one of the forwarding nodes 104F of the P2P network 106. This allows the wallet function of the client 105 to transmit the transaction 152 to the network 106. The client 105 can also contact one, some, or all of the storage nodes 104 to query the blockchain 150 for any transactions in which the respective party 103 is a recipient (or, in an embodiment, actually inspect the transactions of other parties in the blockchain 150, since the blockchain 150 is a public facility that provides trust of transactions in part through its public visibility). The wallet function on each computing device 102 is configured to form and transmit the transaction 152 according to a transaction protocol. Each node 104 executes software configured to validate the transaction 152 according to the node protocol and, in the case of the forwarding node 104F, forward the transaction 152 for propagation throughout the network 106. Transaction protocols and node protocols correspond to each other, and a given transaction protocol implements a given transaction model together with a given node protocol. The same transaction protocol is used for all transactions 152 in the blockchain 150 (although a transaction protocol may allow different subtypes of transactions). The same node protocol is used by all nodes 104 in the network 106 (although many nodes process different transaction subtypes differently according to rules defined for that subtype, and different nodes may take on different roles and thus implement different corresponding aspects of the protocol).

上述のように、ブロックチェーン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を指し示した。 As mentioned above, the blockchain 150 includes a chain of blocks 151, each of which includes a set of one or more transactions 152 created by the proof-of-work process, as described above. Each block 151 also includes a block pointer 155 that points back to a previously created block 151 in the chain, so as to define a sequential order to the blocks 151. The blockchain 150 also includes a pool of valid transactions 154 waiting to be included in a new block by the proof-of-work process. Each transaction 152 includes a pointer to a previous transaction, so as to define an order to the sequence of transactions (note: the sequence of transactions 152 is allowed to diverge). The chain of blocks 151 goes back to the genesis block (Gb) 153, which was the first block in the chain. Early in the chain 150, one or more original transactions 152 pointed to the genesis block 153, but not to a preceding transaction.

所与のパーティ103、例えばAliceがブロックチェーン150に含まれる新たなトランザクション152jを送信したいと望む場合、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新たなトランザクションを定式化する(formulate)。次に、クライアントアプリケーション105からトランザクション152を、彼女が接続されている1つ以上の転送ノード104Fの1つに送信する。例えば、これは、Aliceのコンピュータ102に最も近いか又は最も良好に接続されている転送ノード104Fであってもよい。任意の所与のノード104が新しいトランザクション152jを受信すると、ノードプロトコル及びそのそれぞれの役割に従って、それを処理する。これは、最初に、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たしているかどうかをチェックすることを含み、その例については、簡単に詳述する。いくつかのトランザクションプロトコルでは、検証のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であってよい。あるいは、条件は単にノードプロトコルの組み込み機能であってもよく、あるいはスクリプトとノードプロトコルの組み合わせによって定義されてもよい。 When a given party 103, for example Alice, wants to send a new transaction 152j to be included in the blockchain 150, she formulates the new transaction (using the wallet functionality of her client application 105) according to the relevant transaction protocol. Then, from the client application 105, she sends the transaction 152 to one of one or more forwarding nodes 104F to which she is connected. For example, this may be the forwarding node 104F that is closest or best connected to Alice's computer 102. When any given node 104 receives the new transaction 152j, it processes it according to the node protocol and its respective role. This includes first checking whether the newly received transaction 152j meets certain conditions to be "valid", examples of which will be detailed shortly. In some transaction protocols, the conditions for validation may be configurable on a per-transaction basis by a script included in the transaction 152. Alternatively, the conditions may simply be a built-in feature of the node protocol, or may be defined by a combination of the script and the node protocol.

新たに受信されたトランザクション152jが、有効であると見なされるテストに合格したという条件で(すなわち、「有効である」という条件で)、トランザクション152jを受信した任意の記憶ノード104Sは、そのノード104Sに維持されているブロックチェーン150のコピー内のプール154に、新たに有効とされたトランザクション152を追加する。さらに、トランザクション152jを受信する任意の転送ノード104Fは、検証済みトランザクション152をP2Pネットワーク106内の1つ以上の他のノード104に伝播する。各転送ノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、P2Pネットワーク106全体に間もなく伝播されることを意味する。 Provided that the newly received transaction 152j passes the tests to be considered valid (i.e., is "valid"), any storage node 104S that receives the transaction 152j adds the newly validated transaction 152 to a pool 154 in the copy of the blockchain 150 maintained by that node 104S. Additionally, any forwarding node 104F that receives the transaction 152j propagates the validated transaction 152 to one or more other nodes 104 in the P2P network 106. Because each forwarding node 104F applies the same protocol, assuming the transaction 152j is valid, this means that it will soon be propagated throughout the P2P network 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は、以前のトランザクションへのポインタを含むので、トランザクションの順序もまた、不変的に記録される。 Once in the pool 154 in the copy of the blockchain 150 maintained by one or more storage nodes 104, the miner nodes 104M start competing to solve the proof-of-work puzzle of the latest version of the pool 154 that contains the new transaction 152 (other miners 104M are still trying to solve the puzzle based on their old view of the pool 154, but whoever gets there will first define where the next new block 151 ends and the new pool 154 begins, and eventually someone will solve the puzzle for the part of the pool 154 that contains Alice's transaction 152j). Once the proof-of-work has been done for the pool 154 that contains the new transaction 152j, it becomes part of one of the blocks 151 in the blockchain 150. Since each transaction 152 contains a pointer to the previous transaction, the order of the transactions is also immutably recorded.

図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。 Figure 2 shows an example of a transaction protocol. This is an example of a UTXO-based protocol. A transaction 152 (abbreviated as "Tx") is the basic data structure of the blockchain 150 (each block 151 contains one or more transactions 152). The following is described with reference to an output-based or "UTXO"-based protocol. However, this is not limited to all possible implementations.

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に格納される。 In the UTXO-based model, each transaction ("Tx") 152 includes a data structure that includes one or more inputs 202 and one or more outputs 203. Each output 203 may include an unspent transaction output (UTXO), which can be used as a source of input 202 for another new transaction (if the UTXO has not yet been redeemed). The UTXO specifies an amount of a digital asset (a store of value). It includes, among other information, the transaction ID of the transaction from which it originated. The transaction data structure may also include a header 201, which may include an indicator of the size of the input fields 202 and output fields 203. The header 201 may also include an ID for the transaction. In an embodiment, the transaction ID is a hash of the transaction data (minus the transaction ID itself) and is stored in the header 201 of the outstanding transaction 152 submitted to the miner 104M.

例えばAlice103aは、問題のデジタルアセットの額をBob103bに移転するトランザクション152jを作成したいと考えているとする。図2において、Aliceの新しいトランザクション152jは「Tx」とラベル付けされている。これは、Aliceへのロックされているデジタルアセットの額を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、図2において「Tx」とラベル付けされている。Tx0とTx1は、単なる任意のラベルである。これらは、必ずしも、Tx0がブロックチェーン151の最初のトランザクションであること、又は、Tx1がプール154の直ぐ次のトランザクションであることを意味しない。Txは、まだAliceへのロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションのいずれかを指し示すことができる。 For example, Alice 103a wants to create a transaction 152j that transfers the amount of the digital asset in question to Bob 103b. In FIG. 2, Alice's new transaction 152j is labeled "Tx 1 ". It takes the amount of the digital asset locked to Alice into the output 203 of the previous transaction 152i in the sequence and transfers at least a portion of it to Bob. The previous transaction 152i is labeled "Tx 0 " in FIG. 2. Tx0 and Tx1 are merely arbitrary labels. They do not necessarily mean that Tx0 is the first transaction in the blockchain 151 or that Tx1 is the immediate next transaction in the pool 154. Tx1 could point to any of the previous (i.e., ancestor) transactions that still have a locked unspent output 203 to Alice.

先行するトランザクションTx0は、Aliceがその新しいトランザクションTx1を作成するとき、又は少なくとも彼女がそれをネットワーク106に送信するときまでに、既に検証され、ブロックチェーン150に含まれていてもよい。それは、その時点で既にブロック151のうちの1つに含まれていてもよく、あるいは、プール154内でまだ待機していてもよく、その場合、新しいブロック151にすぐに含まれることになる。あるいは、Tx0及びTx1が生成されネットワーク102に送信されることができ、あるいは、ノードプロトコルが「孤児(orphan)」トランザクションのバッファリングを許容する場合にはTx1の後にTx0が送信されることもできる。ここでトランザクションのシーケンスの文脈で使用される「先行する」及び「後の」という用語は、トランザクション内で指定されたトランザクションポインタ(どのトランザクションがどの他のトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、「先行者」及び「相続者」又は「祖先」及び「子孫」、「親」及び「子」、等により、等しく置き換えられ得る。これは、必ずしも、それらが作成され、ネットワーク106に送られ、又は任意の所与のノード104に到達する順序を意味しない。それにもかかわらず、先行するトランザクション(祖先トランザクション又は「親」)を指す後続のトランザクション(子孫トランザクション又は「子」)は、親トランザクションが検証されない限り、検証されない。親の前にノード104に到着した子は孤児とみなされる。それは、ノードプロトコル及び/又はマイナーの行動に応じて、親を待つために特定の時間、破棄又はバッファリングされることがある。 The preceding transaction Tx0 may already be validated and included in the blockchain 150 by the time Alice creates her new transaction Tx1, or at least by the time she sends it to the network 106. It may already be included in one of the blocks 151 at that point, or it may still be waiting in the pool 154, in which case it will be included in the new block 151 immediately. Alternatively, Tx0 and Tx1 may be generated and sent to the network 102, or Tx0 may be sent after Tx1 if the node protocol allows for buffering of "orphan" transactions. The terms "preceding" and "following" as used herein in the context of a sequence of transactions refer to the order of transactions in a sequence defined by transaction pointers (such as which transaction points to which other transaction) specified in the transaction. They may equally be replaced by "predecessor" and "inheritor" or "ancestor" and "descendant", "parent" and "child", etc. This does not necessarily mean the order in which they are created, sent to the network 106, or arrive at any given node 104. Nevertheless, a subsequent transaction (descendant transaction or "child") that points to a preceding transaction (ancestor transaction or "parent") will not be validated unless the parent transaction is validated. A child that arrives at node 104 before its parent is considered an orphan. It may be discarded or buffered for a certain amount of time to wait for its parent, depending on the node protocol and/or miner behavior.

先行するトランザクションTx0の1つ以上のアウトプット203のうちの1つは、本明細書でUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの額を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。 One of the one or more outputs 203 of the preceding transaction Tx0 includes a particular UTXO, labeled herein as UTXO0. Each UTXO includes a value that specifies the amount of the digital asset represented by the UTXO, and a locking script that defines the conditions that must be met by the unlocking script in the input 202 of the following transaction for the following transaction to be validated, and therefore for the UTXO to be successfully redeemed. Typically, the locking script locks an amount to a particular party (the beneficiary of the transaction in which it is included). That is, the locking script typically defines the unlocking conditions as follows: the unlocking script in the input of the following transaction includes a cryptographic signature of the party to whom the preceding transaction was locked.

ロックスクリプト(別名scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有の言語で書かれたコードの一部である。そのような言語の特定の例は、「スクリプト」(Script,capital S)と呼ばれる。ロックスクリプトは、トランザクションアウトプット203を消費するために必要な情報、例えば、Aliceの署名の必要条件を指定する。トランザクションのアウトプットには、アンロックスクリプトが現れる。アンロックスクリプト(別名:scriptSig)は、ロックスクリプトの基準を満たすために必要な情報を提供するドメイン固有の言語で書かれたコードの一部である。例えば、Bobの署名を含んでもよい。アンロックスクリプトは、トランザクションのインプット202に現れる。 A lock script (aka scriptPubKey) is a piece of code written in a domain-specific language recognized by the node protocol. A specific example of such a language is called "script" (Script, capital S). The lock script specifies the information needed to consume the transaction output 203, e.g., the requirements of Alice's signature. The unlock script appears in the transaction's output. The unlock script (aka scriptSig) is a piece of code written in a domain-specific language that provides the information needed to satisfy the criteria of the lock script. For example, it may include Bob's signature. The unlock script appears in the transaction's inputs 202.

図示の例では、Txのアウトプット203のUTXOは、ロックスクリプト[ChecksigPA]を含み、これは、UTXOが償還されるために(厳密には、UTXOを償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[ChecksigPA]は、Aliceの公開鍵と秘密鍵のペアからの公開鍵PAを含む。Txのインプット202は、Txを指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx全体のハッシュであるTxIDによる)を含む。Txのインプット202は、Txの任意の他の可能なアウトプットの中でそれを識別するために、Tx内のUTXOを識別するインデックスを含む。Tx1のインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。 In the illustrated example, UTXO 0 in output 203 of Tx 0 includes a lock script, [ChecksigP A ], which requires Alice's signature, SigP A , in order for UTXO 0 to be redeemed (or more precisely, for a subsequent transaction that attempts to redeem UTXO 0 to be valid). [ChecksigPA] includes the public key, PA, from Alice's public/private key pair. Input 202 of Tx 1 includes a pointer to Tx 1 (e.g., by its transaction ID, TxID 0 , which in an embodiment is a hash of the entire transaction, Tx 0 ). Input 202 of Tx 1 includes an index that identifies UTXO 0 within Tx 0 , in order to identify it among any other possible outputs of Tx 0. Input 202 of Tx 1 further includes an unlock script, <SigPA>, which includes Alice's cryptographic signature, created by Alice applying her private key from her key pair to a given portion of data (sometimes called a "message" in cryptography). The data (or "message") that Alice needs to sign in order to provide a valid signature may be defined by the lock script, or by the node protocol, or by a combination of these.

新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。

Figure 0007646570000001
ここで、「||」は連結を表し、「<...>」はスタックにデータを配置することを意味し、「[...]」はアンロックスクリプトに含まれる機能である(本例では、スタックベースの言語)。同等に、スクリプトは。、スクリプトを連結するのではなく共通のスタックにより1つずつ実行されてよい。いずれの方法でも、一緒に実行する場合、スクリプトは、Txのアウトプット内のロックスクリプトに含まれるAliceの公開鍵PAを使用して、Txのインプット内のロックスクリプトが、データの期待部分に署名するAliceの署名を含むことを認証する。また、データの期待部分(「メッセージ」)も、この認証を実行するためにTx0に含まれる必要がある。実施形態において、署名されたデータは、Tx0の全体を含む(従って、別個の要素は、データの署名された部分がすでに本質的に存在するので、データの署名された部分の指定にクリアに含まれる必要がある)。 When a new transaction Tx1 arrives at node 104, the node applies the node protocol, which involves running the lock script and the unlock script together to check if the unlock script satisfies the conditions defined in the lock script (which may include one or more criteria). In an embodiment, this involves concatenation of the two scripts.
Figure 0007646570000001
where "||" denotes concatenation, "<...>" means to place data on a stack, and "[...]" is a function included in the unlock script (a stack-based language in this example). Equivalently, the scripts may be executed one by one with a common stack rather than concatenating them. Either way, when executed together, the scripts use Alice's public key P A included in the lock script in the output of Tx 0 to authenticate that the lock script in the input of Tx 1 contains Alice's signature signing the expected portion of the data. The expected portion of the data (the "message") must also be included in Tx 0 to perform this authentication. In an embodiment, the signed data comprises the entirety of Tx 0 (so a separate element needs to be included explicitly in the specification of the signed portion of the data since the signed portion of the data is already inherently present).

公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、Aliceが彼女の秘密鍵によりメッセージを暗号化することによってメッセージに署名した場合、Aliceの公開鍵とそのメッセージが明らか(暗号化されていないメッセージ)ならば、ノード104のような別のエンティティは、そのメッセージの暗号化されたバージョンがAliceによって署名されていなければならないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、署名としてメッセージのクリアなバージョンにこれをタグ付けすることによって、公開鍵の所有者が署名を認証することを可能にする。従って、実施形態では、特定のデータ片又はトランザクションの部分等に署名するという言及は、データ片又はトランザクションの部分のハッシュに署名することを意味し得る。 The details of authentication using public-private cryptography will be well known to those skilled in the art. Essentially, if Alice signs a message by encrypting it with her private key, then with Alice's public key and the message in the clear (unencrypted message), another entity, such as node 104, can authenticate that the encrypted version of the message must have been signed by Alice. Signatures typically allow the holder of the public key to authenticate the signature by hashing the message, signing the hash, and tagging this as the signature on a clear version of the message. Thus, in embodiments, references to signing a particular piece of data or portion of a transaction, etc., may mean signing a hash of the piece of data or portion of the transaction.

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内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。 If the unlock script in Tx1 satisfies one or more conditions specified in the lock script of Tx0 (in the example shown, Alice's signature is provided and authenticated in Tx1), the node 104 considers Tx1 valid. If it is a storage node 104S, this means adding it to the pool 154 of transactions waiting for proof-of-work. If it is a forwarding node 104F, it forwards transaction Tx1 to one or more other nodes 104 in the network 106, which causes it to be propagated throughout the network. Once Tx1 is validated and included in the blockchain 150, it defines it as having consumed UTXO0 from Tx0. Note that Tx1 is only valid if it uses unspent transaction outputs 203. If it attempts to consume an output that has already been consumed by another transaction 152, Tx1 becomes invalid even if all other conditions are met. Therefore, node 104 must also check whether the UTXO referenced in the preceding transaction Tx0 has already been spent (already formed a valid input to another valid transaction). This is one of the reasons why it is important for blockchain 150 to impose a defined order on transactions 152. In practice, a given node 104 may maintain a separate database that marks UTXOs 203 that transactions 152 have spent, but ultimately, what defines whether a UTXO is spent is whether it already forms a valid input to another valid transaction in blockchain 150.

UTXOベースのトランザクションモデルでは、所定のUTXOを全体として使用する必要があることに注意する。UTXOで定義されている量のうち、別の分量が消費されている一方で、分量を「残しておく」ことはできない。ただし、UTXOからの量は、次のトランザクションの複数のアウトプットに分割できる。例えば、Tx0のUTXO0で定義された量は、Tx1の複数のUTXOに分割できる。したがって、AliceがBobにUTXO0で定義された量のすべてを与えることを望まない場合、彼女は残りの量を使って、Tx1の第2のアウトプットの中で自分自身にお釣りを与えるか、又は別のパーティに支払うことができる。 Note that in the UTXO-based transaction model, a given UTXO must be spent in its entirety; it is not possible to "leave" an amount defined in a UTXO while another amount is spent. However, an amount from a UTXO can be split into multiple outputs of a subsequent transaction. For example, the amount defined in UTXO 0 in Tx0 can be split into multiple UTXOs in Tx1. Thus, if Alice does not want to give Bob the entire amount defined in UTXO 0, she can use the remaining amount to give herself change or pay another party in the second output of Tx1.

実際には、Aliceは通常、勝ったマイナーのための手数料も含める必要がある。なぜなら、今日では、生成トランザクションの報酬だけでは、マイニングを動機づけるには通常十分ではないからである。Aliceがマイナーのための手数料を含まない場合、Tx0はマイナーのノード104Mによって拒否される可能性が高く、したがって、技術的には有効であるが、それは依然として伝播されず、ブロックチェーン150に含まれない(マイナーのプロトコルは、マイナーが望まない場合には、マイナー104Mにトランザクション152を受け入れるよう強制しない)。一部のプロトコルでは、マイニング料金は、独自の別個のアウトプット203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、インプット202によって指される総量と、所与のトランザクション152のアウトプット203の中で指定される総量との間の差は、勝ったマイナー104に自動的に与えられる。例えば、UTXO0へのポインタがTx1への唯一のインプットであり、Tx1は1つのアウトプットUTXO1しか持っていないとする。UTXO0で指定されたデジタルアセットの額がUTXO1で指定された量より多い場合、その差は自動的に勝ったマイナー104Mへ行く。しかし、代替的又は追加的に、必ずしも、トランザクション152のUTXO203のうちの独自のものにおいて、マイナー手数料を明示的に指定できることは除外されない。 In practice, Alice usually needs to include a fee for the winning miner as well, because today the reward for the generating transaction alone is usually not enough to motivate mining. If Alice does not include a fee for the miner, Tx0 will likely be rejected by the miner's node 104M, and therefore, although technically valid, it will still not be propagated and included in the blockchain 150 (the miner's protocol does not force the miner 104M to accept the transaction 152 if the miner does not want to). In some protocols, the mining fee does not require its own separate output 203 (i.e., it does not require a separate UTXO). Instead, the difference between the total amount pointed to by the input 202 and the total amount specified in the output 203 of a given transaction 152 is automatically given to the winning miner 104. For example, suppose that a pointer to UTXO0 is the only input to Tx1, and Tx1 has only one output UTXO1. If the amount of the digital asset specified in UTXO0 is greater than the amount specified in UTXO1, the difference automatically goes to the winning miner 104M. However, nothing in this document necessarily precludes that a miner's fee may alternatively or additionally be explicitly specified in a unique one of the UTXOs 203 of transaction 152.

所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎であることに留意する。従って、このようなトランザクションは、伝播されず、マイニングされてブロック151にされることもない。 Note that if the total amount specified in all of a given transaction's 152 outputs 203 is greater than the total amount pointed to by all of its inputs 202, this is another basis for invalidity in most transaction models. Thus, such a transaction will not be propagated or mined into a block 151.

Alice及びBobのデジタルアセットは、ブロックチェーン150内の任意のトランザクション152の中で彼らへのロックされた未使用UTXOで構成されている。従って、典型的には、所与のパーティ103のアセットは、ブロックチェーン150を通して、様々なトランザクション152のUTXO全体に分散される。ブロックチェーン150内のどこにも、所与のパーティ103の総残高を定義する1つの数値は記憶されていない。各パーティへのロックされた、別の将来の(onward)トランザクションにまだ消費されていないすべての様々なUTXOの値をまとめることは、クライアントアプリケーション105におけるウォレット機能の役割である。これは、記憶ノード104Sのいずれかに記憶されたブロックチェーン150のコピーを、例えば、各パーティのコンピュータ機器02に最も近いか、又は最も良好に接続されている記憶ノード104Sに問い合わせることによって行うことができる。 The digital assets of Alice and Bob consist of the unspent UTXOs locked to them in any transaction 152 in the blockchain 150. Thus, typically, the assets of a given party 103 are distributed across the UTXOs of various transactions 152 throughout the blockchain 150. No single number is stored anywhere in the blockchain 150 that defines the total balance of a given party 103. It is the role of the wallet function in the client application 105 to aggregate the value of all the various UTXOs locked to each party that have not yet been spent in another onward transaction. This can be done by querying the copy of the blockchain 150 stored in any of the storage nodes 104S, for example, the storage node 104S that is closest to or best connected to each party's computer device 02.

スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語ではない)ことに注意する。例えば、[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に不変に記録することができるトランザクションの使用不可能アウトプットを生成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望ましいドキュメントを含むことができる。 Note that script codes are often expressed generally (i.e., not in a precise language). For example, one might write [Checksig P A ] to mean [Checksig P A ] = OP_DUPOP_HASH 160 <H(P A )> OP_EQUALVERIFYOP_CHECKSIG. "OP_...." represents a specific opcode in the script language. OP_CHECKSIG (also called "Checksig") is a script opcode that takes two inputs (a signature and a public key) and verifies the validity of the signature using the Elliptic Curve Digital Signature Algorithm (ECDSA). At runtime, all occurrences of the signature ("si"') are removed from the script, but additional requirements such as the hash puzzle remain for the transaction to be verified by the "sig" input. As another example, OP_RETURN is a script language opcode for generating an unspent output of a transaction that can store metadata within the transaction, thereby immutably recording the metadata to the blockchain 150. For example, the metadata may include documents that are desired to be stored on the blockchain.

署名PAは、デジタル署名である。実施形態において、これは楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータに署名する。実施形態では、所与のトランザクションについて、署名はトランザクションインプットの一部、及びトランザクションアウトプットの全部又は一部に署名する。署名するアウトプットの特定の部分はSIGHASHフラグに依存する。SIGHASHフラグは、署名の最後に含まれる4バイトのコードであり、どのアウトプットが署名されるかを選択する(従って、署名の時点で固定される)。 The signature PA is a digital signature. In an embodiment, it is based on ECDSA using the elliptic curve secp256k1. The digital signature signs specific data. In an embodiment, for a given transaction, the signature signs some of the transaction inputs and all or some of the transaction outputs. The specific parts of the outputs to sign depend on the SIGHASH flag, which is a 4-byte code included at the end of the signature that selects which outputs are signed (and is therefore fixed at the time of signing).

ロックスクリプトは、それぞれのトランザクションがロックされているパーティの公開鍵を含んでいることを表す「scriptPubKey」と呼ばれることがある。アンロックスクリプトは、対応する署名を提供することを表す「scriptSig」と呼ばれることがある。しかし、より一般的には、UTXOが償還される条件が署名を認証することを含むことは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語は、1つ以上の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」及び「アンロックスクリプト」が好ましい。 The lock script is sometimes referred to as a "scriptPubKey" to denote that the respective transaction includes the public key of the party being locked. The unlock script is sometimes referred to as a "scriptSig" to denote that it provides the corresponding signature. However, more generally, it is not required in all applications of blockchain 150 that the conditions under which a UTXO is redeemed include authenticating a signature. More generally, a scripting language may be used to define one or more conditions. Thus, the more general terms "lock script" and "unlock script" are preferred.

図3は、ブロックチェーン150を実装するためのシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、それぞれ、追加通信機能を含む。つまり、それは、Alice103aが、(いずれかのパーティ又は第3者の勧誘で)Bob103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークと別個にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(まだ)発行されることなく、又はチェーン150乗でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。このようなサイドチャネル301は、時に、例えば「支払いチャネル」として使用される。 Figure 3 shows a system 100 for implementing a blockchain 150. The system 100 is substantially the same as described in connection with Figure 1, except that an additional communication function is included. The client applications present on each of Alice's and Bob's computing devices 102a, 102b, respectively, include the additional communication function. That is, it allows Alice 103a to establish (at the invitation of either party or a third party) a separate side channel 301 with Bob 103b. The side channel 301 allows for the exchange of data separately from the P2P network. Such communication is sometimes referred to as "off-chain". For example, this may be used to exchange transactions 152 between Alice and Bob without the transaction being published (yet) to the network P2P 106 or on the chain 150 until one of the parties chooses to broadcast the transaction to the network 106. Such a side channel 301 is sometimes used, for example, as a "payment channel".

サイドチャネル301は、P2Pオーバレイネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置102a、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりP2Pオーバレイネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると表される場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンクまたは同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。 The side channel 301 may be established over the same packet-switched network 101 as the P2P overlay network 106. Alternatively or additionally, the side channel 301 may be established over a different network, such as a local area network, such as a mobile cellular network, or a local wireless network, or a direct wired or wireless link between Alice and Bob's devices 102a, 102b. In general, the side channel 301 referred to anywhere in this specification may include any one or more links over one or more networking technologies or communication media for exchanging data "off-chain", i.e., separately from the P2P overlay network 106. When more than one link is used, the bundle or collection of off-chain links as a whole may be referred to as the side channel 301. Thus, it is noted that when Alice and Bob are described as exchanging certain information or pieces of data, etc., over the side channel 301, this does not necessarily mean that all of these pieces of data need to be transmitted over exactly the same links or the same type of network.

<例示的な定義>
以下は、幾つかの実装において採用得る幾つかの例示的な定義である。これらは、全部の可能な実装を限定するものではなく、後述する例示的な使用例の幾つかの可能な実装において利用され得る特定の可能な実装の理解を助けるためだけに提供されることに留意する。
Illustrative Definitions
Below are some example definitions that may be employed in some implementations. Note that these are not intended to limit all possible implementations, but are provided only to aid in understanding certain possible implementations that may be utilized in some possible implementations of the example use cases described below.

定義1:トランザクション。トランザクションは、インプットとアウトプットとを含むメッセージである。それは、プロトコルバージョン番号及び/又はロックタイム(locktime)も含んでよい。プロトコルバージョンは、トランザクションプロトコルのバージョンを示す。ロックタイムは、後に個別に説明される。 Definition 1: Transaction. A transaction is a message that contains inputs and outputs. It may also contain a protocol version number and/or a locktime. The protocol version indicates the version of the transaction protocol. The locktime is explained separately later.

定義2:インプットトランザクションのインプットは、順序付きリストを形成する。リスト内の各エントリは、アウトプット(未使用トランザクションアウトプットの識別子)、及びscriptSig(アンロックスクリプト)を含む。それは、シーケンス番号も含んでよい。 Definition 2: The inputs of an input transaction form an ordered list. Each entry in the list contains an output (an identifier for an unspent transaction output) and a scriptSig (the unlock script). It may also contain a sequence number.

定義3:アウトプット:トランザクションのアウトプットは、順序付きリストを形成する。リスト内の各エントリは、値(その基本単位におけるデジタルアセットの額)、及びscriptPubKey(ロックスクリプト)を含む。 Definition 3: Outputs: The outputs of a transaction form an ordered list. Each entry in the list contains a value (the amount of the digital asset in that base unit) and a scriptPubKey (the locking script).

定義4:アウトポイント。アウトポイントは、トランザクションID TxID、及びインデックス番号iによりユニークに定義される。トランザクションアウトプットTxIDのアウトプットの中のi番目のエントリを表し、未使用トランザクションアウトプット(UTXO)のユニークな位置を与える。用語「未使用(unspent)」は、本願明細書で、アウトポイントが任意の有効な後続のトランザクションの中に現れていないことを意味する。 Definition 4: Outpoint. An outpoint is uniquely defined by a transaction ID TxID and an index number i. It represents the i-th entry in the output of a transaction output TxID and gives a unique location of an unspent transaction output (UTXO). The term "unspent" is used herein to mean that the outpoint does not appear in any valid subsequent transaction.

定義5:scriptSig。これは、所与のアウトポイントに対応するUTXOをアンロックする又は使用するために要求される情報である。標準的なトランザクションでは、この情報は通常ECDSA署名である。従って、スクリプトは「scriptSig」と呼ばれる。しかしながら、アウトポイントをアンロックするために必要な情報は、UTXOのロック条件を満たす任意のデータであり得る。 Definition 5: scriptSig. This is the information required to unlock or spend the UTXO corresponding to a given outpoint. In a standard transaction, this information is usually an ECDSA signature; hence the script is called the "scriptSig". However, the information required to unlock an outpoint can be any data that satisfies the locking conditions of the UTXO.

定義6:scriptPubKey。これは、特定のUTXOに関連付けられた資金をロックするスクリプトである。scriptSigがscriptPubKeyに付加され、結合されたスクリプトの実行が真を与える場合に及びその場合にのみ、資金がアンロックされ、使用できる。そうでない場合には、トランザクションは無効であり、拒否される。これは、通常、標準的なトランザクションではECDSA公開鍵のハッシュ値を含むので、「scriptPubKey」と呼ばれる。 Definition 6: scriptPubKey. This is the script that locks the funds associated with a particular UTXO. A scriptSig is appended to the scriptPubKey, and the funds are unlocked and can be spent if and only if execution of the combined script yields true. Otherwise, the transaction is invalid and is rejected. This is called a "scriptPubKey" because in standard transactions it usually contains a hash of the ECDSA public key.

次の定義では、インプット又はアウトプットへの署名が参照され、これは、scriptSig部分(定義2を参照)を除く1つ又は複数のインプットへの署名を意味する。 In the following definitions, reference is made to signing an input or output, which means signing one or more inputs excluding the scriptSig part (see definition 2).

定義7:SIGHASHフラグ。ECDSA署名を提供するとき、以下のSIGHASHフラグのうちの1つも付加する必要がある。

Figure 0007646570000002
Definition 7: SIGHASH Flags. When providing an ECDSA signature, one of the following SIGHASH flags MUST also be included:
Figure 0007646570000002

適応性を機能として議論するとき、トランザクション内で、ECDSA署名により署名されていない情報を探す。署名されるべきメッセージから除外され得るインプット及びアウトプットとは別に、scriptSigのコンテンツは常に除外される。これは、scriptSigが署名のプレースホルダーであるよう設計されるからである。 When discussing adaptability as a feature, we look for information in a transaction that is not signed with an ECDSA signature. Apart from inputs and outputs that can be excluded from the message to be signed, the contents of the scriptSig are always excluded. This is because the scriptSig is designed to be a placeholder for the signature.

定義8:ブロックチェーンタイムロック。一般に、トランザクション内で使用可能な2つのタイプのタイムロック:絶対的タイムロック及び相対的タイムロックがある。絶対的タイムロックは、その後に何かが「有効」であると考えられる特定の時点を指定する。一方で、相対的タイムロックは、何かが有効であると考えられる前に経過しなければならない期間を指定する。両方の場合に、ブロックチェーンタイムロックを使用するときの時間の代わりとして、ブロック高(マイニングされたブロックの数)又は経過時間(例えば、UNIX(登録商標)時間)を使用できる。 Definition 8: Blockchain Timelocks. In general, there are two types of timelocks that can be used within a transaction: absolute timelocks and relative timelocks. Absolute timelocks specify a specific point in time after which something is considered "valid", while relative timelocks specify a period of time that must pass before something is considered valid. In both cases, block height (number of blocks mined) or elapsed time (e.g. UNIX time) can be used as a proxy for time when using blockchain timelocks.

ブロックチェーンタイムロックの別の特性は、それらが表れる場所であり、それらが適用されるトランザクションの態様である。ここでも、この意味でタイムロックの2つの分類:トランザクション全体をロックするトランザクションレベル、及び特定のアウトプットをロックするスクリプトレベルがある。これらのタイムロックは両方とも、絶対的タイムロック又は相対的タイムロックのいずれかを実装するために使用できる。以下の表は、これらの特性に基づき生成可能なタイムロックを実装する4つの可能なメカニズムを纏めたものである。

Figure 0007646570000003
Another characteristic of blockchain timelocks is where they appear and the aspect of the transaction to which they are applied. Again, there are two classifications of timelocks in this sense: transaction level, which lock the entire transaction, and script level, which lock specific outputs. Both of these timelocks can be used to implement either absolute or relative timelocks. The table below summarizes four possible mechanisms to implement timelocks that can be generated based on these characteristics.
Figure 0007646570000003

定義9:nLocktime。ロックタイム(nLocktime)は、ブロック高又はUNIX時間で特定の時間を表す負ではない整数である。それは、トランザクションが指定されたブロック又は指定された時間の後にのみブロックチェーンに追加できるという意味で、トランザクションレベルのタイムロックである。nLocktimeが500,000,000より小さく設定される場合、それはブロック高と考えられる。それが500,000,000以上に設定された場合、それはUNIX時間の表現と考えられる。それは、1970年1月1日の00:00:00の後の秒数である。 Definition 9: nLocktime. nLocktime is a non-negative integer that represents a block-high or a specific time in UNIX time. It is a transaction-level time lock, in the sense that a transaction can only be added to the blockchain in a specified block or after a specified time. If nLocktime is set to less than 500,000,000, it is considered a block-high. If it is set to 500,000,000 or greater, it is considered a representation of UNIX time. It is the number of seconds after 00:00:00 on January 1, 1970.

例えば、現在のブロック高が3,000,000の高さであり、ロックタイムは4,000,000に設定される場合、トランザクションは、4百万番目のブロックがマイニングされるまで、マイナーにより検討されない。 For example, if the current block height is 3,000,000 high and the lock time is set to 4,000,000, the transaction will not be considered by miners until the 4 millionth block is mined.

定義10:nSequence。シーケンス番号(nSequence)は、トランザクションのバージョンをメッセージとして示す。トランザクションに対する任意の変更は、シーケンス番号を1つ大きくインクリメントする。nSequenceの最大値は232-1であり、通常、シーケンス番号は、デフォルトでこの最大値に設定されてトランザクションが完了していることを示す。nSequence値は、トランザクションの各インプットについて定義され、インプットにより参照されるUTXOがブロックに含まれた後、有効なインプットとして使用可能になる前の時間期間を指定する。マイナーが同じインプットを有する2つのトランザクションを認識した場合、マイナーは、より大きなシーケンス番号を有するトランザクションを選択する。しかしながら、この特徴は、一般的に無効にされている。 Definition 10: nSequence. The sequence number (nSequence) indicates the version of the transaction as a message. Any change to the transaction increments the sequence number by one. The maximum value of nSequence is 2 32 −1, and the sequence number is usually set to this maximum value by default to indicate that the transaction is complete. An nSequence value is defined for each input of a transaction and specifies the time period after the UTXO referenced by the input is included in a block before it becomes available as a valid input. When a miner sees two transactions with the same input, the miner chooses the transaction with the higher sequence number. However, this feature is commonly disabled.

定義11:CheckLockTimeVerify (OP_CLTV)。オペコードOP_CHECKLOCKTIMEVERIFY (OP_CLTV)は、将来の何らかの特定の時間又はブロック高にトランザクションの特定のアウトプットをロックするために使用可能な絶対的スクリプトレベルのタイムロックである。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、UTXOが生成されたUNIX時間又はブロック高にOP_CLTVオペコードの前に指定されたパラメータを足したものを超える場合、支払いトランザクションについてのスクリプト実行は失敗する。 Definition 11: CheckLockTimeVerify (OP_CLTV). The opcode OP_CHECKLOCKTIMEVERIFY (OP_CLTV) is an absolute script-level timelock that can be used to lock a specific output of a transaction to some specific time or block height in the future. If the current UNIX time or block height at which the UTXO is referenced in the transaction exceeds the UNIX time or block height at which the UTXO was created plus the parameter specified before the OP_CLTV opcode, script execution for the payment transaction will fail.

定義12:CheckSequenceVerify (OP_CSV)。オペコードOP_CHECKSEQUENCEVERIFY (OP_CSV)は、将来の特定の時間期間又はブロック数についてトランザクションの特定のアウトプットをロックするために使用可能な相対的スクリプトレベルのタイムロックである。これはOP_CLTVと同様に動作するが、OP_CSVに提供されるパラメータが相対的時間を表すことが異なる。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、UTXOが生成されたUNIX時間又はブロック高にOP_CSVオペコードの前に指定されたパラメータを足したものを超える場合、支払いトランザクションについてのスクリプト実行は失敗する。 Definition 12: CheckSequenceVerify (OP_CSV). The opcode OP_CHECKSEQUENCEVERIFY (OP_CSV) is a relative script-level timelock that can be used to lock a particular output of a transaction for a particular time period or number of blocks in the future. It works similarly to OP_CLTV, except that the parameter provided to OP_CSV represents a relative time. If the current UNIX time or block height at which the UTXO is referenced in the transaction exceeds the UNIX time or block height at which the UTXO was created plus the parameter specified before the OP_CSV opcode, script execution for the payment transaction will fail.

定義13:適応性(Malleability)。一般に、ブロックチェーントランザクションにおいて可能な2つの広義の適応性がある。それらは両方とも、インプットの中で提供される署名を無効にすることなく、トランザクションの内容を変更できるようにする。 Definition 13: Malleability. In general, there are two broad definitions of malleability possible in blockchain transactions. They both allow the contents of a transaction to be changed without invalidating the signatures provided in the inputs.

両方の場合を説明するために、1つのインプットと、該インプットの中の1つの署名と、1つのアウトプットと、を有する初期トランザクションTxを考える。 To illustrate both cases, consider an initial transaction Tx with one input, one signature on that input, and one output.

タイプ1:スクリプトレベルの適応性。このタイプの適応性は、スクリプトオペコードOP_CHECKSIGによりチェックされるべき署名が、トランザクション内の任意のインプットのスクリプトフィールドに署名しないという事実を利用する。この事実は、トランザクションTxに対する署名を生成し、インプットスクリプトを変更して、トランザクションTx'がTxと同一ではないが、依然としてTx’及びTxが両方とも、ブロックチェーン合意ルールの下で同じ署名により署名された有効なトランザクションメッセージと考えられることを可能にする。 Type 1: Script-level adaptability. This type of adaptability exploits the fact that the signature to be checked by the script opcode OP_CHECKSIG does not sign the script fields of any inputs in the transaction. This fact allows one to generate a signature for transaction Tx and modify the input script so that transaction Tx' is not identical to Tx, but still allows both Tx' and Tx to be considered valid transaction messages signed by the same signature under blockchain consensus rules.

タイプ2:インプット及びアウトプットレベルの適応性。このタイプの適応性は、トランザクション内で利用されているSIGHASH ALL以外のSIGHASHフラグの使用に依存する。トランザクションTxが、5個の他のSIGHASHフラグの組合せのうちのいずれかを使用するインプット署名を有する場合、(1又は複数の)インプット又は(1又は複数の)アウトプットのいずれかが追加されて、同一ではないトランザクションTx'を生成できる。その結果、両者は、署名を変更する必要を伴わずに、合意に従い有効なトランザクションメッセージと考えられる。 Type 2: Input and output level adaptability. This type of adaptability relies on the use of SIGHASH flags other than SIGHASH ALL being used within a transaction. If a transaction Tx has an input signature that uses any of the five other SIGHASH flag combinations, then either the input(s) or the output(s) can be added to produce a non-identical transaction Tx'. As a result, both parties agree on what is considered a valid transaction message without the need to change the signature.

特徴としての適応性 Adaptability as a characteristic

図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つへ転送されるように第三者の機器へターゲットトランザクションを送信すること、を含み得る。 4 illustrates an exemplary implementation of a client application 105 for implementing an embodiment of the disclosed scheme. The client application 105 includes a transaction engine 401 and a user interface (UI) layer 402. The transaction engine 401 is configured to implement the underlying transaction-related functionality of the client 105, such as forming a transaction 152, receiving and/or sending transactions and/or other data via a side channel 301, and/or sending a transaction to be propagated through the P2P network 106, according to the scheme described above and as discussed in detail below. According to an embodiment disclosed herein, the transaction engine 401 of at least Bob's client 105b includes an application functionality 403 in the form of a selection function, which allows for a selection as to which of two or more different versions of a target transaction ("Tx p " and "Tx p '") should be sent from Bob's respective computing device 102 to be propagated through the P2P network 106 for validation and thus recorded in the blockchain 150 (the propagation and recording themselves being performed by the mechanisms described above). Again, this transmission may include transmitting the target transaction directly from Bob's computing device 102b to one of the forwarding nodes 104F of the network 106, or transmitting the target transaction to a third party device to be forwarded to Alice's device 102b or to one of the nodes 104F of the network 106.

UIレイヤ402は、それぞれのユーザコンピュータ機器102のユーザ入力/出力(I/O)手段を介して、機器102のユーザ出力手段によりそれぞれのユーザ103へ情報を出力すること及び機器102のユーザ入力手段によりそれぞれのユーザ103から入力を受信することを含む、ユーザインタフェースをレンダリングするよう構成される。例えば、ユーザ出力手段は、視覚出力を提供する1つ以上のディスプレイスクリーン(タッチ又は非タッチスクリーン)、オーディオ出力を提供する1つ以上のスピーカ、及び/又は触覚出力を提供する1つ以上の触覚出力装置、等を含み得る。ユーザ入力手段は、例えば、(出力手段のために使用されるものと同じ又は異なる)1つ以上のタッチスクリーンの入力アレイ、マウス、トラックパッド、若しくはトラックボールのような1つ以上のカーソルに基づく装置、会話若しくは音声入力を受信する1つ以上のマイクロフォン及び会話若しくは音声認識アルゴリズム、手動若しくは身体ジェスチャの形式で入力を受信する1つ以上のジェスチャに基づく入力装置、又は1つ以上の機械的ボタン、スイッチ、若しくはジョイスティック、等を含み得る。 The UI layer 402 is configured to render a user interface via user input/output (I/O) means of each user computing device 102, including outputting information to each user 103 by user output means of the device 102 and receiving input from each user 103 by user input means of the device 102. For example, the user output means may include one or more display screens (touch or non-touch screen) providing visual output, one or more speakers providing audio output, and/or one or more haptic output devices providing haptic output, etc. The user input means may include, for example, one or more touchscreen input arrays (same or different as those used for the output means), one or more cursor-based devices such as a mouse, trackpad, or trackball, one or more microphones and speech or voice recognition algorithms to receive speech or audio input, one or more gesture-based input devices to receive input in the form of manual or physical gestures, or one or more mechanical buttons, switches, or joysticks, etc.

注:本願明細書において種々の機能が同じクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、それらは2つ以上の異なるアプリケーションのスーツに実装されてよく、例えば一方が他方へのプラグインである。例えば、トランザクションエンジン401の機能は、UIレイヤ402と別個のアプリケーション、又は所与のモジュールの機能に実装されてよく、トランザクションエンジン401が1つより多くのアプリケーションの間で分割されてよい。また、記載の機能の一部又は全部が、例えばオペレーティングシステムレイヤに実装されることを除外しない。本願明細書のどこかで、単一の又は所与のアプリケーション105等を参照する場合、これが単に例であること、より一般的には、記載の機能が任意の形式のソフトウェアで実装され得ることが理解される。 Note: Although various functions may be described herein as being integrated into the same client application 105, this is not necessarily limiting and instead they may be implemented in two or more different suites of applications, e.g. one plugging into the other. For example, the functionality of the transaction engine 401 may be implemented in a separate application from the UI layer 402, or in the functionality of a given module, the transaction engine 401 may be split between more than one application. Also, it does not exclude that some or all of the described functionality may be implemented, for example, in the operating system layer. When reference is made elsewhere in this specification to a single or given application 105, etc., it is understood that this is merely an example and that more generally the described functionality may be implemented in any form of software.

図5は、Bobの機器102b上のクライアントアプリケーション105のUIレイヤ402によりレンダリングされてよいユーザインタフェース(UI)500の例の模擬表示を与える。ユーザインタフェース500は、少なくとも2つのユーザ選択可能オプション501、502を含む。これらは、2つのスクリーン上のボタン又はメニューの中の2つの異なるオプションのように、ユーザ出力手段により2つの異なるUI要素としてレンダリングされてよい。ユーザ入力手段は、スクリーン上のUI要素をクリック若しくはタッチすることにより、又は所望のオプションの名称を発話することにより、ユーザ103b(この場合にはBob)がオプションのうちの1つを選択できるよう構成される(注:ここで使用される「手動(manual)」は単に自動の反対を意味し、手の使用に限定されない)。オプションをレンダリング及び選択する特定の手段は重要でないことが理解される。 5 provides a simulated representation of an example user interface (UI) 500 that may be rendered by the UI layer 402 of the client application 105 on Bob's device 102b. The user interface 500 includes at least two user-selectable options 501, 502. These may be rendered as two different UI elements by a user output means, such as two on-screen buttons or two different options in a menu. The user input means is configured to allow the user 103b (Bob in this case) to select one of the options by clicking or touching an on-screen UI element or by speaking the name of the desired option (note: "manual" as used herein simply means the opposite of automatic and is not limited to the use of hands). It will be understood that the particular means of rendering and selecting the options is not important.

どんな手段が使用されても、オプションの各々は第1及び第2ターゲットトランザクションTxp及びTxp’の異なる1つに対応する。選択機能403は、以下を可能にするためにUIレイヤ402とインタフェースするよう構成される。つまり、Bob103bが第1オプション501を選択した場合、これは、トランザクションエンジン403に、ネットワーク106を通じて伝播させブロックチェーン150に記録されるように、ターゲットトランザクションの第1バージョンTxpを送信させる。しかし、Bob103bが第2オプション403を選択した場合、これは、トランザクションエンジン403に、ネットワーク106を通じて伝播させブロックチェーン150に記録されるように、ターゲットトランザクションの第1バージョンTxp’を送信させる。 Whatever means are used, each of the options corresponds to a different one of the first and second target transactions Tx p and Tx p '. The selection function 403 is configured to interface with the UI layer 402 to enable the following: if Bob 103b selects the first option 501, this causes the transaction engine 403 to send the first version of the target transaction Tx p to be propagated through the network 106 and recorded in the blockchain 150; however, if Bob 103b selects the second option 403, this causes the transaction engine 403 to send the first version of the target transaction Tx p ' to be propagated through the network 106 and recorded in the blockchain 150.

図5に示されるUI500は、単なる概略的な模擬表示であり、実際には、それは、簡潔さのために図示されない1つ以上の更なるUI要素を含んでよいことが理解される。 It will be understood that the UI 500 shown in FIG. 5 is merely a schematic mock-up and that in practice it may include one or more additional UI elements that are not shown for the sake of brevity.

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バージョンを自動的に送り出すための環境は、システム設計者により事実上何でも構成され得る。 As an alternative or in addition to UI options 501, 502, the selection function 403 may be configured to perform an automatic selection between the transmission of the first and second versions Tx p or Tx p ′ of the target transaction for recording in the blockchain 150. This may be triggered automatically depending on a predefined event or after a predefined timeout. For example, if an event Y occurs before the timeout, the function 403 automatically transmits the second version Tx p ′ to be propagated through the network 150. However, if the timeout has elapsed before the event Y occurs, the function 403 automatically transmits the first version Tx p instead. Alternatively, if an event X occurs, the function 403 automatically transmits the first version Tx p to be propagated through the network 150. However, if an event Y occurs, the function 403 automatically transmits the second version Tx p ′ instead. In principle, the circumstances for automatically sending the first and second versions to the network 150 can be configured by the system designer to be virtually anything.

図6は、本願明細書に開示される実施形態に従い使用するためのトランザクション152のセットを示す。セットは、第0トランザクションTx、第1トランザクションTx、及び第2トランザクションTxp/Txp’を含む。これらの名称は単に便宜上のラベルであることに留意する。それらは、必ずしも、これらのトランザクションが直ちに1つずつブロック151又はブロックチェーン150内に置かれること、又は第0トランザクションがブロック151又はブロックチェーン150内の最初のトランザクションであることを意味しない。また、これらのラベルは、それらのトランザクションがネットワーク106へ送信される順序に関して何も示唆しない。それらは、単に、1つのトランザクションのアウトプットが次のトランザクションのインプットによりポイントされる論理的シリーズを表す。幾つかのシステムでは、親をその子の後にネットワーク106へ送信することが可能であることを思い出してほしい(この場合、「親のない」子がある期間の間、1つ以上のノード104においてバッファされ、その間、親が到着するのを待っている)。 6 shows a set of transactions 152 for use in accordance with the embodiments disclosed herein. The set includes a zeroth transaction Tx 0 , a first transaction Tx 1 , and a second transaction Tx p /Tx p ′. Note that these names are merely labels for convenience. They do not necessarily mean that these transactions are immediately placed one by one in block 151 or blockchain 150, or that the zeroth transaction is the first transaction in block 151 or blockchain 150. Also, these labels do not imply anything about the order in which these transactions are sent to the network 106. They simply represent a logical series in which the output of one transaction is pointed to by the input of the next transaction. Recall that in some systems, it is possible for a parent to be sent to the network 106 after its children (in this case, the “orphaned” child is buffered in one or more nodes 104 for a period of time, waiting for its parent to arrive).

2つのトランザクションTxp又はTxp’は、両者が第1トランザクションの同じアウトプット(例えば、同じUTXO)を参照するインプットを含む場合、(実質的に)同じトランザクションのバージョンであると言える。異なるバージョンは、そのアウトプットの異なるアンロック条件を満たすことにより、異なる機能を提供し得る。異なるバージョンは、両方とも、同一のインプット署名も含んでよい(つまり、いずれのインスタンスの中の署名済みメッセージが同一である)。後述する幾つかの実施形態は、第1トランザクションの異なるインスタンスTxi(ここで、i=1,2,3,…)も含んでよい。2つ(以上)のトランザクションは、ここでは、両者が同じソーストランザクション(又は「第0」トランザクション)の同じアウトプット(例えばUTXO)Txを参照するインプットを含む場合、(実質的に)同じ第1トランザクションのインスタンスであると言える。それらは、同じアンロック条件を満たすことに基づき、該インプットを償還してよい。それらは、しかしながら、異なるインプット署名を含んでよい(つまり、いずれのインスタンスの中の署名済みメッセージが同一ではない)。異なるインスタンスは、異なるそれぞれのデータ部分に対する支払い、及びデジタルアセットの増分量を指定するが、実質的に同じ機能を提供してよい。これは、図7~9、及び例示的な使用例2を参照して後に詳述する。 Two transactions Tx p or Tx p ′ are said to be (effectively) versions of the same transaction if they both contain an input that references the same output (e.g., the same UTXO) of the first transaction. Different versions may provide different functionality by satisfying different unlock conditions of that output. Different versions may also both contain the same input signature (i.e., the signed message in every instance is the same). Some embodiments described below may also contain different instances Tx i (where i=1, 2, 3, ...) of the first transaction. Two (or more) transactions are said here to be (effectively) instances of the same first transaction if they both contain an input that references the same output (e.g., UTXO) Tx 0 of the same source transaction (or the "zeroth" transaction). They may redeem the input based on satisfying the same unlock condition. They may, however, contain different input signatures (i.e., the signed message in every instance is not the same). Different instances may specify payments for different respective data portions and incremental amounts of digital assets, but provide substantially the same functionality, as will be described in more detail below with reference to Figures 7-9 and exemplary use case 2.

第0トランザクションTxは、本発明の目的のためにソーストランザクションと呼ばれてもよく、Alice103aへのロックされたデジタルアセットの額のソースとして機能する。第1トランザクションTxは、本発明の目的のために、中間トランザクション又は条件付きトランザクションと呼ばれてもよく、ソーストランザクションTxからデジタルアセットの額を条件付きで移転する仲介として機能する。第2トランザクションTxp/Txp’はターゲットトランザクション又は支払いトランザクション(ここでは添え字「P」)と呼ばれてもよく、条件のうちの1つをアンロックし、Bob(又は場合によっては、Bobが代表を務める受益者)への支払いを提供するトランザクションである。上述のように、ターゲットトランザクションは、2つのバージョン、第1バージョンTxp及び第2バージョンTxp’を有する。これらのトランザクションは、それぞれ、Alice(第1パーティ)のコンピュータ機器102a又はBob(第2パーティ)のコンピュータ機器102b、或いは第三者のコンピュータ機器(図示しない)、又はこれらの任意の組合せ、のいずれかにおいて少なくともある時点で存在し、明示される。2つのバージョンTxp及びTxp’は、並列に一緒にある期間の間、又は1つずつ、又は部分的に時間において重複して、存在してよい。 The zeroth transaction Tx0 may be referred to as a source transaction for the purposes of the present invention, and serves as a source of the amount of locked digital assets to Alice 103a. The first transaction Tx1 may be referred to as an intermediate or conditional transaction for the purposes of the present invention, and serves as an intermediary that conditionally transfers an amount of digital assets from the source transaction Tx0 . The second transaction Txp / Txp ' may be referred to as a target or payment transaction (herein subscripted "P"), and is the transaction that unlocks one of the conditions and provides a payment to Bob (or, in some cases, a beneficiary represented by Bob). As mentioned above, the target transaction has two versions, a first version Txp and a second version Txp '. These transactions each exist and are manifested at least at some point in time on either Alice's (first party) computer device 102a or Bob's (second party) computer device 102b, or on a third party computer device (not shown), or any combination thereof. The two versions Tx p and Tx p ' may exist together in parallel for a period of time, or one after the other, or partially overlapping in time.

図6に示すように、ソーストランザクションTxは、デジタルアセットの額を指定する少なくとも1つのアウトプット203(例えば、Txのアウトプット0)、及びAlice103aへのこのアウトプットをロックするロックスクリプトを更に含む。これは、ソーストランザクションTxのロックスクリプトが、少なくとも1つの条件が満たされることを要求することを意味する。この条件は、アウトプットをアンロックしようとする(従って、デジタルアセットの額を償還する)任意のトランザクションのインプットが、そのアンロックスクリプト内にAliceの暗号署名(つまり、Aliceの公開鍵を使用する)を含まなければならないことである。この意味で、Txのアウトプット内で定義される量は、Aliceにより所有されると言える。アウトプットは、UTXOと呼ばれてよい。どの先行するトランザクションのアウトプットがTxのインプットをポイントするかは(それらが、Txの合計アウトプットをカバーするのに十分である限り)、本発明の目的のために特に重要ではない。 As shown in FIG. 6, source transaction Tx0 further includes at least one output 2030 (e.g., output 0 of Tx0) that specifies an amount of digital assets, and a lock script that locks this output to Alice 103a. This means that the lock script of source transaction Tx0 requires that at least one condition be met. This condition is that an input of any transaction that seeks to unlock the output (and thus redeem the amount of digital assets) must include Alice's cryptographic signature (i.e., using Alice's public key) in its unlock script. In this sense, the amount defined in the output of Tx0 is said to be owned by Alice. The output may be referred to as a UTXO. It is not particularly important for the purposes of the present invention which previous transaction's outputs point to the input of Tx0 (as long as they are sufficient to cover the total output of Tx0 ).

本発明の場合には、ソーストランザクションTxのアウトプットをアンロックするトランザクションは、第1又は中間トランザクションTxである。従って、Txは、Txの関連するアウトプット(図示の例ではTxのアウトプット0)へのポインタを含み及び該アウトプットのロックスクリプト内で定義された条件に従いTxのポイントされたアウトプットをアンロックするよう構成される、少なくともAliceの署名を要求するアンロックスクリプトを更に含む、少なくとも1つのインプット202(例えばTxのインプット0)を有する。Txのロックスクリプトにより要求されるAliceからの署名は、Txの特定の部分に署名することが要求される。幾つかのプロトコルでは、署名される必要のあるTxの部分は、Txのアンロックスクリプト内で定義された設定であり得る。例えば、これは、署名に付加される1バイトであるSIGHASHフラグにより設定されてよい。従って、データの観点では、アンロックスクリプトは次の通りである:<Sig PA><sighashflag><PA>代替として、署名される必要のあるの部分は、単にTx.の固定部分であってよい。いずれの方法も、署名されるべき部分は、標準的に、アンロックスクリプト自体を除き、及びTxのインプットの一部又は全部を除いてよい。これは、Txのインプットが適応性があることを意味する。 In the present case, the transaction that unlocks the output of source transaction Tx 0 is the first or intermediate transaction Tx 1. Thus, Tx 1 has at least one input 202 1 (e.g., input 0 of Tx 1 ) that further includes an unlock script requiring at least Alice's signature, which includes a pointer to the relevant output of Tx 0 (output 0 of Tx 0 in the illustrated example) and is configured to unlock the pointed output of Tx 0 according to the conditions defined in the lock script of that output. The signature from Alice required by the lock script of Tx 0 is required to sign a specific portion of Tx 1. In some protocols, the portion of Tx 1 that needs to be signed may be a setting defined in the unlock script of Tx 1. For example, this may be set by a SIGHASH flag, which is a byte that is appended to the signature. So, in data terms, the unlock script is:<Sig P A ><sighashflag><P A >Alternatively, the part of that needs to be signed may simply be a fixed part of Tx1 . Either way, the part to be signed may typically exclude the unlock script itself, and some or all of the input of Tx1 . This means that the input of Tx1 is adaptive.

第1又は中間トランザクションTxは、少なくとも1つのアウトプット203(例えば、ここでもアウトプットがUTXOと呼ばれてよいTxのアウトプット0)を有する。中間トランザクションTxのアウトプットは、無条件には任意の1つのパーティにロックされない。Txと同様に、それは、転送されるべきデジタルアセットの額を指定する少なくとも1つのアウトプット(例えば、Txのアウトプット0)を有する。該アウトプットは、該アウトプットをアンロックする、従って該量を償還するために何が必要かを定義するロックスクリプトを更に含む。しかしながら、このロックスクリプトは、少なくとも(i)第1条件(「条件1」)及び(ii)第2条件(「条件2」)を含む複数の異なる可能な条件のうちの任意の1つに基づき、そのアウトプットがアンロックされること可能にする。 The first or intermediate transaction Tx1 has at least one output 2031 (e.g., output 0 of Tx1, where the output may again be referred to as a UTXO). The output of intermediate transaction Tx1 is not unconditionally locked to any one party. Like Tx0 , it has at least one output (e.g., output 0 of Tx1 ) that specifies the amount of digital assets to be transferred. The output further includes a locking script that defines what is required to unlock the output, and thus redeem the amount. However, this locking script allows the output to be unlocked based on any one of several different possible conditions, including at least (i) a first condition ("Condition 1") and (ii) a second condition ("Condition 2").

第2の、ターゲットトランザクションTxp/Txp’は、少なくとも1つのインプット202p(例えば、Txp/Txp’のインプット0)を有し、該インプットは、Txの上述のアウトプット(図示の例ではTxのアウトプット0)へのポインタを含み、Txのロックスクリプトの中で定義された複数の代替条件のうちの1つを満たすことに基づきTxの該アウトプットをアンロックするよう構成されるアンロックスクリプトも更に含む。ターゲットトランザクションの第1バージョンTxpでは、ロックスクリプトは、第1条件、条件1を満たすよう構成される。幾つかのポイントで、ターゲットトランザクションの第2バージョンTxp’も生成される。第2バージョンでは、アンロックスクリプトは、第2条件、条件2を満たすよう構成される。 The second, target transaction Tx p /Tx p ' has at least one input 202p (e.g., input 0 of Tx p /Tx p ') that includes a pointer to the aforementioned output of Tx 1 (output 0 of Tx 1 in the illustrated example) and further includes an unlock script configured to unlock the output of Tx 1 based on satisfying one of a number of alternative conditions defined in the lock script of Tx 1. In the first version of the target transaction Tx p , the lock script is configured to satisfy a first condition, condition 1. At some point, a second version of the target transaction Tx p ' is also generated. In the second version, the unlock script is configured to satisfy a second condition, condition 2.

第2の、ターゲットトランザクションTxp/Txp’は、少なくとも1つのアウトプット202p(例えば、Txp/Txp’のアウトプット0)を有し、該アウトプットは、いずれのバージョンでも、Bobへ移転すべきデジタルアセットの額、及びこれをBobに対してロックするロックスクリプトを指定する(つまり、これは、更なる、今後のトランザクションが、使用するためにアンロックスクリプトの中にBobの署名を含むことが要求される)。この意味で、ターゲットトランザクションTxp/Txp’のアウトプットは、Bobにより所有されると言える。このアウトプットは、ここでもUTXOと呼ばれてよい。 The second, target transaction Tx p /Tx p ' has at least one output 202p (e.g., output 0 of Tx p /Tx p ') that, in any version, specifies the amount of the digital asset to be transferred to Bob and a lock script that locks it to Bob (i.e., this requires that further, future transactions include Bob's signature in the unlock script in order to use it). In this sense, the output of target transaction Tx p /Tx p ' is said to be owned by Bob. This output may again be referred to as a UTXO.

実施形態では、第1条件は、Tx、この場合にはターゲットトランザクションの第1バージョンTxp、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内に、Bobの暗号署名、及び/又はBobが提供又は含めなければならないBobのデータであってよいデータペイロード、を含むことを要求する。データペイロードを含むという要件は、Txのロックスクリプトに含まれるハッシュチャレンジにより課されることができる。チャレンジは、データのハッシュ(データ自体ではない)、及び(アンロックスクリプトと一緒にノード104上で実行すると)対応するアンロックスクリプト内で提供されるデータのハッシュがロックスクリプト内で提供されるハッシュ値と等しいかどうかをテストするよう構成されるスクリプト片を含む。署名に対する要件は、例えば上述のCheckSigにより課される。実施形態では、第1条件が、Aliceの署名がTxpのアンロックスクリプトに含まれることを要求しない.Bobにより署名される必要のあるTxpの部分は、Txpのアンロックスクリプトの設定であってよく(例えば、SIGHASHフラグにより指定される)、又は固定されてよい。いずれの方法も、少なくともアンロックスクリプトを除く。従って、Txpのアンロックスクリプトは適応性がある。 In an embodiment, the first condition requires that the unlock script of the transaction attempting to unlock Tx 1 , in this case the first version of the target transaction Tx p , includes in its unlock script a cryptographic signature of Bob and/or a data payload, which may be Bob's data that Bob must provide or include. The requirement to include a data payload can be imposed by a hash challenge included in the lock script of Tx 1 . The challenge includes a hash of the data (not the data itself) and a piece of script that (when executed on node 104 together with the unlock script) is configured to test whether the hash of the data provided in the corresponding unlock script is equal to the hash value provided in the lock script. The requirement on the signature is imposed, for example, by CheckSig as described above. In an embodiment, the first condition does not require that Alice's signature be included in the unlock script of Tx p . The parts of Tx p that need to be signed by Bob may be a setting in the unlock script of Tx p (e.g., specified by a SIGHASH flag) or may be fixed. Either way, at least excluding the unlock script. Therefore, the unlock script for Tx p is adaptive.

実施形態では、第2条件は、Tx、この場合にはターゲットトランザクションの第2バージョンTxp’、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内にBobの暗号署名及びAliceの暗号署名の両方を含むことを要求する。ここでも、これは例えばCheckSigにより課される。実施形態では、第1条件が、データペイロードがTxp’のアンロックスクリプトに含まれることを要求しない。Alice及びBobにより署名される必要のあるTxp’の部分は、Txp’のアンロックスクリプトの設定であってよく(例えば、SIGHASHフラグにより指定される)、又は固定されてよい。 In an embodiment, the second condition requires that the unlock script of the transaction attempting to unlock Tx1 , in this case the second version of the target transaction Txp ', includes both Bob's cryptographic signature and Alice's cryptographic signature in its unlock script. Again, this is imposed, for example, by CheckSig. In an embodiment, the first condition does not require that the data payload be included in Txp 's unlock script. The portions of Txp ' that need to be signed by Alice and Bob may be a setting in Txp 's unlock script (e.g., specified by a SIGHASH flag) or may be fixed.

第0(つまりソース)トランザクションTxは、Alice、Bob、又は第三者により生成されてよい。それは、標準的に、AliceがTxのインプット内に定義された量を取得した先行するパーティの署名を要求する。それは、Alice、Bob、先行するパーティ、又は別の第三者によりネットワーク106へ送信されてよい。 The zeroth (or source) transaction Tx 0 may be generated by Alice, Bob, or a third party. It typically requires a signature from the preceding party from whom Alice obtained a defined amount in the input of Tx 0. It may be sent to the network 106 by Alice, Bob, the preceding party, or another third party.

第1(つまり中間、条件付き)トランザクションTxも、Alice、Bob、又は第三者により生成されてよい。実施形態では、それはAliceの署名を要求するので、それはAliceにより生成されてよい。代替として、それは、Bob又は第三者によりテンプレートとして生成され、次に署名のためにAliceへ送信されてよく、例えばサイドチャネル301を介して送信される。Aliceは、次に、署名付きトランザクションをネットワーク106へ彼女自身で送信し、又はそれをBob若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼女の署名をBob若しくは第三者へ送信して、署名付きTxに構成してネットワーク106へ転送できる。ここでも、Txをネットワーク106へ送信する前の任意のオフチェーン交換は、サイドチャネル301を介して実行されてよい。 The first (i.e. intermediate, conditional) transaction Tx1 may also be generated by Alice, Bob, or a third party. In an embodiment, it may be generated by Alice, since it requires Alice's signature. Alternatively, it may be generated by Bob or a third party as a template and then sent to Alice for signing, e.g., sent via side channel 301. Alice can then send the signed transaction to network 106 herself, or send it to Bob or a third party to forward them to network 106, or simply send her signature to Bob or a third party to compose into signed Tx1 and forward to network 106. Again, any off-chain exchanges prior to sending Tx1 to network 106 may be performed via side channel 301.

第2の(つまり、ターゲット又は支払い)トランザクションTxp/Txp’のいずれのバージョンも、Alice、Bob、又は第三者により生成されてよい。第1バージョンはBobの署名及び/又はデータを要求するので、Bobにより生成されてよい。代替として、それは、Alice又は第三者によりテンプレートとして生成され、次に、署名し及びデータを追加するためにBobへ送信されてよく、例えば、サイドチャネル301を介してBobへ送信される。Bobは、次に、署名付きトランザクションをネットワーク106へ彼自身で送信し、又はそれをAlice若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼の署名をAlice若しくは第三者へ送信して、署名付きTxに構成してネットワークへ転送できる。実施形態では、第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を介して実行されてよい。 Either version of the second (i.e., target or payment) transaction Tx p /Tx p ′ may be generated by Alice, Bob, or a third party. The first version may be generated by Bob, since it requires Bob's signature and/or data. Alternatively, it may be generated as a template by Alice or a third party and then sent to Bob to sign and add data, e.g., sent to Bob via side channel 301. Bob can then send the signed transaction to the network 106 himself, or send it to Alice or a third party and forward them to the network 106, or simply send his signature to Alice or a third party to compose it into a signed Tx p and forward it to the network. In an embodiment, the second version requires the signatures of both Bob and Alice. Therefore, it may be generated as a template by Alice or Bob and sent to the other as a template to add their signatures, e.g., again via side channel 301. Alternatively, it may be generated as a template by a third party and then sent to Alice. Here, Alice may add her signature and forward it to Bob for Bob to add his signature. Bob then forwards the signed transaction to the network 106 or sends it back to Alice or a third party for them to forward to the network 106. Alternatively, Tx p ′ may be generated by a third party as a template and then sent to Bob. Here, Bob adds his signature and forwards it to Alice for Alice to add her signature. Alice then forwards the signed transaction to the network 106 or sends it back to Bob or a third party for them to forward to the network 106. In a further variation, Alice and/or Bob sign the received transaction template and return their signature to one of the other parties, which composes it into Tx p ′ and forwards it to the network 106. Again, any off-chain exchanges prior to sending Tx p and/or Tx p ′ to the network 106 may be performed via side channel 301.

トランザクションの異なる要素が生成され構成され得る種々の位置があり、それが直接に又は間接的にP2Pネットワーク106の最終的な宛先へと送信される種々の方法があることが理解される。開示の技術の実装の範囲は、これらのいずれに関しても限定されない。 It is understood that there are various locations where different elements of a transaction may be generated and configured, and various ways in which they may be transmitted, directly or indirectly, to their ultimate destination in the P2P network 106. The scope of implementation of the disclosed technology is not limited in any of these respects.

「Aliceにより」、「Bobにより」、及び「第三者により」のような語句は、本願明細書では、それぞれ「Aliceのコンピュータ機器102aにより」、「Bobのコンピュータ機器102bにより」、及び「第三者のコンピュータ機器102により」の短縮表現として使用されることがある。また、所与のパーティの機器は、該パーティにより使用される1つ以上のユーザ装置、又は該パーティにより利用されるクラウドリソースのような幾つかのサーバリソース、又はそれらの任意の組合せを含み得ることに留意する。それは、必ずしも動作が単一のユーザ装置上で実行されることに限定しない。 Phrases such as "by Alice," "by Bob," and "by a third party" are sometimes used herein as shorthand for "by Alice's computing device 102a," "by Bob's computing device 102b," and "by a third party's computing device 102," respectively. Note also that the equipment of a given party may include one or more user devices used by the party, or several server resources, such as cloud resources, utilized by the party, or any combination thereof. It does not necessarily limit operations to being performed on a single user device.

ターゲットトランザクションTxpのアンロックスクリプトは適応性があるので、実施形態では、ターゲットトランザクションの第2バージョンTxp’は第1バージョンTxpを適応することにより、つまりTxpの既存のデータ構造を取り入れ、及びそれを変更して第2バージョンTxp’を形成することにより、この場合にはロックスクリプトを適応することにより、生成されてよい。これは、スクリプトレベルの適応性の例である。等価な変形ではしかしながら、Txp’は、アンロックスクリプトが異なることを除き同じ構造を有するターゲットトランザクションの新しいバージョンを生成することにより、生成されてよい。「更新する」は、本願明細書では、既存の構造を適応する又は新しい置換バージョンを生成する可能性を記述するために一般的な用語として使用されてよい。適応は、種々の実施形態に関連して、本願明細書において例として言及され得るが、これはターゲットトランザクションおn新しいバージョンをスクラッチから生成することにより置き換えることができることが理解される。いずれの方法も、新しいバージョンの適応又は生成は、Alice及び/又はBobにより、及び/又はAlice及び/又はBobの署名が与えられれば第三者により、実行されてよい。 Since the unlock script of the target transaction Tx p is adaptive, in an embodiment, a second version Tx p ' of the target transaction may be generated by adapting the first version Tx p , i.e., by taking the existing data structure of Tx p and modifying it to form the second version Tx p ', in this case by adapting the lock script. This is an example of script-level adaptability. In an equivalent variant, however, Tx p ' may be generated by generating a new version of the target transaction that has the same structure except that the unlock script is different. "Update" may be used herein as a general term to describe the possibility of adapting an existing structure or generating a new replacement version. Adaptation may be mentioned herein as an example in connection with various embodiments, but it is understood that this may be replaced by generating a new version of the target transaction from scratch. Either way, the adaptation or generation of the new version may be performed by Alice and/or Bob and/or by a third party given the signatures of Alice and/or Bob.

幾つかの実施形態では、Txのロックスクリプトは、第1及び第2条件の両方に対する代替として、第3アンロック条件を含んでよい。第3条件は、ロックタイムが終了すること、及びAliceの署名がターゲットトランザクションの第3バージョンTxp’’のアンロックスクリプトに含まれることを要求してよい。これは、(例えば、Bobが処理に全く従事しないため又は時間制限内にそうすることに失敗したために)Bobが第1及び第2条件のいずれかに基づき請求しない場合に、AliceがTxのアウトプットからの彼女の支払いの返金を請求することを可能にする。ロックタイムは、絶対的時点、又は例えば秒で計測される経過すべき時間期間、又はマイニングされるブロック数として定義されてよい。 In some embodiments, the lock script of Tx 1 may include a third unlock condition as an alternative to both the first and second conditions. The third condition may require that the lock time expires and that Alice's signature be included in the unlock script of the third version of the target transaction, Tx p ″. This allows Alice to claim back her payment from the output of Tx 1 if Bob does not claim under either the first or second condition (e.g., because he does not engage in the transaction at all or fails to do so within the time limit). The lock time may be defined as an absolute point in time, or a period of time that must elapse, measured, for example, in seconds, or a number of blocks to be mined.

例示的な使用例1-Bobのためのセキュリティ
上述のように、実施形態では、Txで、第1条件(i)は、Bobの署名及びデータペイロードがTxpのアンロックスクリプトに含まれることを要求するが、Aliceの署名を要求しない。第2条件(ii)は、Alice及びBobの両方の署名を要求するが、データペイロードがTxp’のアンロックスクリプトに含まれることを要求しない。
Exemplary Use Case 1 - Security for Bob As described above, in an embodiment, at Tx 1 , the first condition (i) requires that Bob's signature and data payload be included in the unlock script of Tx p , but does not require Alice's signature. The second condition (ii) requires both Alice and Bob's signatures, but does not require the data payload to be included in the unlock script of Tx p '.

つまり、Aliceが、彼女に何らかのサービスを提供する、例えば彼女のために何らかのDIYを行う、何らかの商品を提供する、何らかの相談サービスを提供する、等のためにBobに支払いたいとする。Aliceは、アウトプット(上述の例を参照するとTxのアウトプット0)内にサービスに対する支払いを含む第1(中間)トランザクションTxを生成する。彼女はこれをサイドチャネル301を介してBobへ送信する。代替として第1トランザクションは、Bob、又は第三者により生成され得る。それは、この段階で、Alice、Bob、又は第三者により、ブロックチェーン150に記録されるためにネットワーク106を介して伝播されるよう、送信され得る。或いは、それは、それら3つのパーティのうちのいずれかにより、後に、第2のターゲットトランザクションTxp/Txp’と同時に、又はターゲットトランザクションの後に、ネットワーク106へ送信され得る。 That is, suppose Alice wants to pay Bob for providing her with some service, e.g. doing some DIY for her, providing some goods, providing some consulting services, etc. Alice generates a first (intermediate) transaction Tx1 that includes the payment for the service in an output (output 0 of Tx1 with reference to the example above). She sends this to Bob via the side channel 301. Alternatively, the first transaction could be generated by Bob, or by a third party. It could be submitted at this stage by Alice, Bob, or a third party to be propagated through the network 106 to be recorded in the blockchain 150. Alternatively, it could be submitted to the network 106 later by any of those three parties, either simultaneously with the second target transaction Txp / Txp ' or after the target transaction.

Aliceは、サイドチャネル301を介してBobへ、ターゲットトランザクションの第1バージョンTxpも、Bobのためのテンプレートとして署名し及びデータペイロードを追加するために送信する(又はペイロードはAliceにより含まれ得る)。代替として、ターゲットトランザクションの第1バージョンは、Bobにより、又は第三者によりBobが署名し彼のデータペイロードを追加するためのテンプレートとして生成され得る(又は第三者がペイロードを含め得る)。Bobは、ターゲットトランザクションの第1バージョンTxpのコピーを、少なくとも第2バージョンTxp’が取得されるまで、保持する。或いは、代替として、第1バージョンTxpは、Bobの署名及びデータが与えられれば、Bobの代わりに第三者により保持され得る。 Alice also sends the first version of the target transaction, Tx p , via side channel 301 to Bob as a template for Bob to sign and add his data payload (or the payload may be included by Alice). Alternatively, the first version of the target transaction may be generated by Bob or by a third party as a template for Bob to sign and add his data payload (or the payload may be included by a third party). Bob keeps a copy of the first version of the target transaction, Tx p , at least until the second version, Tx p ', is obtained. Alternatively, the first version, Tx p , may be kept by a third party on Bob's behalf, given Bob's signature and data.

ターゲットトランザクションTxpは、最初に、データペイロードを含み、従って、Aliceの署名を必要としないが、データペイロードがアンロックスクリプトに含まれている場合にのみ、Bobにより(又はBobを代表して)一方的に償還可能である。これは、マイニングされるのにより費用がかかり、及び/又はBobのプライベートな又は独自のデータを危うくする可能性がある。従って、Bobは、Aliceを幸せに保ち、彼女に、彼女の署名を含むターゲットトランザクションの第2の、更新バージョンTxp’を提供すること(又はBob又は第三者がターゲットトランザクションTxp’へと構成する彼女の署名を送信する)を望む。これは、ターゲットトランザクションTxp’にデータペイロードを含む必要を伴わずに、BobがTxのアウトプットを償還することを可能にする。しかしながら、Bobがサービスを提供するが、Aliceが合意を破った、又はサービスの満足のいく提供に論争がある場合、Bobは、データペイロードがターゲットトランザクションTxpに含まれることを要求するあまり好ましくない第1条件に基づき、Txのアウトプットを償還するというフォールバックを依然として有する。 The target transaction Txp initially includes a data payload and therefore does not require Alice's signature, but is unilaterally redeemable by (or on behalf of) Bob only if the data payload is included in the unlock script. This would be more expensive to mine and/or could compromise Bob's private or proprietary data. Bob therefore wants to keep Alice happy and provide her with a second, updated version of the target transaction Txp ' that includes her signature (or send her signature that Bob or a third party composes into the target transaction Txp '). This allows Bob to redeem the output of Tx1 without having to include a data payload in the target transaction Txp ' . However, if Bob provides a service but Alice breaks the agreement or there is a dispute over the satisfactory provision of the service, Bob still has the fallback to redeem the output of Tx1 under the less favorable first condition that requires the data payload to be included in the target transaction Txp .

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へブロードキャストする。 Once Bob has accomplished the service for Alice, she provides her signature if Alice is honest and satisfied with the service. The second version of the target transaction, Tx p ′, requires signatures from both Alice and Bob. Bob may send the first version, Tx p , with or without the data payload to Alice over a side channel 301 for Alice to adapt by signing it with her signature (and removing the data if still present). Alternatively, Bob may simply send his signature to Alice over a side channel 301 for Alice to compose into the second version, Tx p ′. Alice may then send this version (sometimes referred to as “broadcasting” or “publishing” the transaction to the network 106) to be propagated through the P2P network 106 and recorded in the blockchain 150. Alternatively, Alice may return the complete second version of the target transaction, Tx p ′, to Bob via side channel 301 for Bob to broadcast to network 106, or send it via a side channel to a third party for the third party to broadcast. As another example, Alice generates her signature based on the first or second version (the only difference between them is in the adaptive part) and simply sends her signature to Bob via side channel 301. Bob composes Alice's signature along with his signature into the complete second version of the target transaction, Tx p ′, which he broadcasts to network 106, or sends it via a side channel to a third party for the third party to broadcast. Or in another alternative, both Alice and Bob send their signatures via a side channel to a third party, which composes into the complete second version of the target transaction, Tx p ′, which he broadcasts to network 106.

第1トランザクションTx及び実際にはソーストランザクションも、ブロックチェーン150に記録するために、ネットワーク106へブロードキャストされる必要がある。これは、それらが何らかの段階で最終的に検証される限り、任意のパーティにより任意の時点で行われ得る。 The first transaction Tx1 , and indeed also the source transaction, needs to be broadcast to the network 106 in order to be recorded in the blockchain 150. This can be done at any time by any party, as long as they are eventually verified at some stage.

第1条件がAliceの署名を要求しないという事実は、Aliceが彼女の署名により彼女の認可を提供しない場合でも、Bobが、Txのアウトプットの中で定義された量を、ターゲットトランザクションの第1バージョンTxpを用いて第1条件に基づき自動的に償還できることを意味する。しかしながら、データペイロードを含むという要件は煩わしい。マイナー104Mは、マイニングのためにトランザクションを受け入れるためにマイニング手数料を要求する。手数料が十分ではない場合、トランザクションが有効であっても(有効性及び受け入れ可能性は、別個の概念である)、彼らはブロック151へとマイニングするためにトランザクションを受け入れない。代替又は追加で、対象となるデータは、Bobにとって秘密、機密、又は独自であってよい。その結果、データをブロックチェーン150に発行することは、Bobに別の形式のペナルティを提示し得る。従って、Bobは、Aliceの署名を取得しようとするために、及びターゲットトランザクションの第2バージョンTxp’を用いて好ましい第2条件に基づきTxを償還するために、良好なサービスを提供することを動機付けられる。しかしながら、Aliceが違反した場合、Bobは、ターゲットトランザクションの第1バージョンTxpを用いて、あまり好ましくない第1条件に基づき、依然としてTxを償還できる。従って、第1バージョンTxpは、Bobにとって一種の抵当又はデポジットとして機能する。 The fact that the first condition does not require Alice's signature means that Bob can automatically redeem the amount defined in the output of Tx 1 under the first condition with the first version of the target transaction Tx p even if Alice does not provide her authorization with her signature. However, the requirement to include a data payload is onerous. Miners 104M require a mining fee to accept the transaction for mining. If the fee is not sufficient, they will not accept the transaction for mining into block 151, even if the transaction is valid (validity and acceptability are separate concepts). Alternatively or additionally, the data in question may be secret, confidential, or proprietary to Bob. As a result, publishing the data to the blockchain 150 may present another form of penalty to Bob. Bob is therefore motivated to provide good service to try to obtain Alice's signature and to redeem Tx 1 under the preferred second condition with the second version of the target transaction Tx p ′. However, if Alice breaches, Bob can still redeem Tx 1 using the first version of the target transaction, Tx p , under the less favorable first condition. Thus, the first version, Tx p , serves as a kind of mortgage or deposit for Bob.

TxがAliceにより形成された場合でも、Txのロックスクリプト内の第1条件の中の要件は、データペイロード自体がTxのロックスクリプトに含まれること又はAliceに知られることを要求しないことに留意する。むしろ、それは、(ノード104においてハッシングされるとアンロックスクリプト内のハッシュ値と一致するデータを提供するために、Txpのアンロックスクリプトをチャレンジするスクリプトと一緒に)データペイロードのハッシュがTxのロックスクリプトに含まれることを要求するだけである。従って、Alice又は第三者がTxを形成する場合でも、Bobは、彼らに彼のデータのハッシュを与えればよく、データ自体を与える必要がない。彼がデータを発行しなければならないのは、彼がターゲットトランザクションの第1バージョンTxpをチェーンに発行した場合のみである。 Note that even if Tx 1 was created by Alice, the requirement in the first condition in Tx 1 's lock script does not require that the data payload itself be included in Tx 1 's lock script or known to Alice. Rather, it only requires that a hash of the data payload be included in Tx 1 's lock script (along with a script that challenges Tx p 's unlock script to provide data that, when hashed at node 104, matches the hash value in the unlock script). Thus, even if Alice or a third party creates Tx 1 , Bob only needs to give them a hash of his data, not the data itself. He only needs to publish the data if he publishes the first version of the target transaction, Tx p , onto the chain.

例示的な使用例2-ストリーミング
図7を参照すると、例えばAliceはBobからの何らかのデータをストリーミングするために支払いたいと望む。データは、BobからAliceへ「チャンク毎に」、つまり部分D,D,D,等のシーケンスで、転送される。これらは、例えば、AliceがBobからストリーミングしているメディアコンテンツのアイテムの部分であってよく、例えば映画のようなビデオトラック及び/又は音楽のようなオーディオトラックを含む。ビデオは、任意の時間と共に変化する画像又はグラフィック、例えば映画、TV番組、スライドショー、又は他のそのようなシーケンス若しくは静止画像、アニメーションベクトルグラフィック、及び/又はゲームコンテンツを含んでよい。オーディオは、サンプリングされたオーディオ及び/又は合成されたオーディオを含み、会話、音楽、ノイズ、及び/又は効果、等を含み得る。別の例では、以下の技術は、「彼女が支払う限り(pay as she goes)」Aliceにサービス、例えば、ガス、電気、又は水道のような生活必需サービスの提供、又は車両、不動産、又は他の物理的オブジェクトのレンタル、を可能にするために使用され得る。サービスに対する支払いの場合には、データ部分が所望のコンテンツ自体の部分である代わりに、各データ部分D,D,D等は、サービスのユニットをアンロックするために必要な異なるそれぞれの鍵を含む。例えば、Aliceのガス、電気、又は水道供給は、彼女のコンピュータ機器102aに接続されるスマートメータにより支配される。それぞれの受信した鍵により、彼女は、これを彼女のコンピュータ機器102aから彼女のメータへと供給する。これは、それぞれの鍵を検証することに応答して、生活必需サービスの別のユニットをアンロックする。
Illustrative Use Case 2 - Streaming With reference to FIG. 7, for example, Alice wants to pay to stream some data from Bob. The data is transferred from Bob to Alice "chunk by chunk", i.e., in a sequence of portions D0 , D1 , D2 , etc. These may be, for example, portions of an item of media content that Alice is streaming from Bob, including, for example, a video track such as a movie and/or an audio track such as music. The video may include any time-changing images or graphics, such as a movie, a TV program, a slide show, or other such sequences or still images, animated vector graphics, and/or gaming content. The audio may include sampled and/or synthesized audio, and may include dialogue, music, noises, and/or effects, etc. In another example, the following techniques may be used to enable the provision of services to Alice "as long as she goes", such as the provision of essential services such as gas, electricity, or water, or the rental of a vehicle, property, or other physical object. In the case of payment for a service, instead of the data portions being parts of the desired content itself, each data portion D0 , D1 , D2 etc. contains a different respective key required to unlock a unit of the service. For example, Alice's gas, electricity or water supply is governed by a smart meter connected to her computing equipment 102a. With each received key, she feeds it from her computing equipment 102a to her meter, which in response to verifying the respective key, unlocks another unit of the essential service.

Bobの支払いがそれまでに受信されたデータ部分の数に比例するように、データの部分をストリーミングすることが望ましいことがある。これを行うために、各データ部分D,D,D…がBobから受信されることに応答して、Aliceは、それぞれの署名付きトランザクションTx,Tx,Tx…をBobへ、サイドチャネル301を介して返すことができる。これは、Bobがデータの送信を停止した場合、Aliceは単に支払いの送信を停止できること、及びAliceが支払いの送信を停止した場合、Bobは単にデータの送信を停止でき、Aliceが支払っていないデータDの1つより多くの部分を提供しないことを意味する。 It may be desirable to stream the portions of the data so that Bob's payment is proportional to the number of data portions received so far. To do this, in response to each data portion D0 , D1 , D2 ... being received from Bob, Alice can return a respective signed transaction Tx1 , Tx2 , Tx3 ... to Bob via side channel 301. This means that if Bob stops sending data, Alice can simply stop sending payments, and if Alice stops sending payments, Bob can simply stop sending data and will not provide more than one portion of the data D that Alice has not paid for.

しかしながら、ストリーミングされているそれぞれの個別のデータ部分D,D,D等について個別のトランザクションをネットワーク106にブロードキャストしブロックチェーン150に記録することはネットワーク輻輳を増大しブロックチェーン150を膨大にし得るので、そうする必要がない方法でこれを行うことも望ましい。 However, it is also desirable to do this in a way that does not require broadcasting to the network 106 and recording in the blockchain 150 a separate transaction for each separate data portion D0 , D1 , D2 , etc. being streamed, as this could increase network congestion and bloat the blockchain 150.

これを解決するために、AliceがBobからそれぞれ受信する各データ部分D,D,D…に応答して、AliceがBobへ返送する各トランザクションTx,Tx,Tx…は、同じソーストランザクションTxの同じアウトプット(例えば、同じUTXO)を指す第1トランザクションの異なるインスタンスである。第1トランザクションの量はその都度増大するので、Bobは、特定の定義されたシーケンスの終わりにある最後のもの、例えばオーディオまたはビデオトラックの終わり(例えば、映画の終わり)、又はサービスの指定された期間(例えば、1時間、1日、1週間、又は1月に1回)のアウトプットを請求するだけである。これは、以下に更に図7を参照して更に詳細に説明される。 To solve this, each transaction Tx1 , Tx2 , Tx3 ... that Alice sends back to Bob in response to each data portion D0 , D1 , D2 ... that she receives from Bob, respectively, is a different instance of the first transaction pointing to the same output (e.g., the same UTXO) of the same source transaction Tx0 . As the amount of the first transaction grows each time, Bob only claims the last one at the end of a particular defined sequence, for example the end of an audio or video track (e.g., the end of a movie), or the output of a specified period of service (e.g., once an hour, day, week, or month). This is explained in more detail further below with reference to FIG. 7.

第1に、BobがAliceからの支払いを得たままデータを送信しないことにより騙すことができないように、第2に、Aliceがデータを受信してBobに支払わないことにより騙すことができないように、部分をストリーミングすることも望ましい。 It is also desirable to stream the parts, firstly so that Bob cannot cheat by getting payment from Alice and not sending the data, and secondly so that Alice cannot cheat by receiving the data and not paying Bob.

実施形態では、第1トランザクションの各インスタンスは、そのインプットによりポイントされるより多くの合計デジタルアセット量を有する複数のアウトプットを有する。これは、トランザクションが、誰かが、実際にはBobが彼自身の別のインプットを追加して差分を補うまで、有効ではないことを意味する(インプットレベルの適応性の例)。これは、Aliceがシーケンスの中で前のトランザクションを発行するのを止め、これはBobが後のトランザクションを発行するのを阻止する。これは、従って、映画全体等に対してデポジットとして機能する初期資金(funding)トランザクションを有しないでストリーミングを可能にする。これは、以下に図8を参照して更に詳細に議論される。 In an embodiment, each instance of the first transaction has multiple outputs with a total digital asset amount greater than that pointed to by its inputs. This means that the transaction is not valid until someone, in fact Bob, adds another input of his own to make up the difference (an example of input-level adaptability). This stops Alice from issuing an earlier transaction in the sequence, which prevents Bob from issuing a later transaction. This thus enables streaming without having an initial funding transaction that acts as a deposit for an entire movie, etc. This is discussed in more detail below with reference to FIG. 8.

ストリーミング方法を実施するために、Alice及びBobは、彼らの間にオフチェーンサイドチャネル301を確立する。つまり、このチャネルを介して送信されるトランザクションは、ブロックチェーン150に記録するために(未だ)P2Pネットワークに発行されていない。これは、本願明細書で「微細支払いチャネル」とも呼ばれる支払いチャネルの変更された形式として使用される。更に、Bobは、Aliceにシーケンス内のデータ部分D,D,D…のハッシュセットを利用可能にする。例えば、Bobは、Aliceにハッシュセットを支払いチャネル301を介して送信してよく、又はインターネット101等のサーバからアクセスするためにそれを公に利用可能にしてよい。ハッシュセットは、Alice自身がデータ自体を予め知る必要がなく、Aliceがデータのハッシュチャレンジを生成することを可能にするハッシュのセットを含む。例えば、ハッシュセットは、マークル(Merkle)ツリーとしても知られるハッシュツリーを含んでよい(用語「マークルツリー」は、本願明細書で、その最も広義の意味で使用され、任意のハッシュツリーを意味し、例えば必ずしもバイナリブランチに限定されないことに留意する)。代替として、ハッシュセットはハッシュチェーン又はハッシュリストを含み得る。 To implement the streaming method, Alice and Bob establish an off-chain side channel 301 between them. That is, transactions sent over this channel are not (yet) published to the P2P network for recording in the blockchain 150. This is used as a modified form of a payment channel, also referred to herein as a "fine payment channel". In addition, Bob makes available to Alice a hash set of the data portions D 0 , D 1 , D 2 ... in the sequence. For example, Bob may send the hash set to Alice over the payment channel 301, or may make it publicly available for access from a server such as the Internet 101. The hash set includes a set of hashes that allow Alice to generate a hash challenge for data without Alice having to have prior knowledge of the data itself. For example, the hash set may include a hash tree, also known as a Merkle tree (note that the term "Merkle tree" is used herein in its broadest sense to mean any hash tree, e.g., not necessarily limited to a binary branch). Alternatively, the hash set may include a hash chain or a hash list.

Bobは、Aliceに第1データ部分Dを支払いチャネル301を介して送信することにより開始する。この第1部分は無料で又は信頼して送信される。Aliceが支払わない場合、Bobは第1部分のデータ価値より多くを失わない。Aliceが継続を望むとすると、Dを受信することに応答して、彼女は、Bobに第1トランザクションの第1インスタンスTxを支払いチャネル301を介して送信する。これに応答して、Bobは、Aliceにシーケンスの中で次のデータ部分を送信し、次に、これに応答して、AliceはBobに第1トランザクションの第2インスタンスTxを送信し、次に、BobはAliceにDを送信し、AliceはBobにTxを送信し、以下同様であり、全ては支払いチャネル301を介する。第1トランザクションの各インスタンスTx,Tx,Tx…は、Bobへの増大する、例えばそれまでに受信したデータ部分Dの数と共に線形に増大する支払いを指定する。しかしながら、第1トランザクションの各インスタンスTx,Tx,Tx…は、Aliceの同じUTXOを指す。従って、Bobは、第2の、ターゲットトランザクションの有効なインスタンスTxp/Txp’を構成し、それらのうちの1つからの支払いを請求するだけでよい(同じUTXOを2回償還しようとする試みは、無効であるとしてネットワーク106により拒否されるだろう)。全てが上手く行くとすると、Bobは、従って、シーケンスの中の第1トランザクションの最後のインスタンスからの支払いを請求する、ターゲットトランザクションのバージョンを生成する。 Bob begins by sending Alice a first data portion D0 over the payment channel 301. This first portion is sent for free or reliably. If Alice does not pay, Bob loses no more than the data value of the first portion. Assuming Alice wants to continue, in response to receiving D0 , she sends Bob a first instance of the first transaction Tx1 over the payment channel 301. In response, Bob sends Alice the next data portion in the sequence, and in response, Alice sends Bob a second instance of the first transaction Tx2 , and then Bob sends Alice D2 , and Alice sends Bob Tx2 , and so on, all over the payment channel 301. Each instance Tx1 , Tx2 , Tx3 , ... of the first transaction specifies an increasing payment to Bob, e.g., linearly increasing with the number of data portions D received so far. However, each instance of the first transaction, Tx 1 , Tx 2 , Tx 3 ..., points to the same UTXO of Alice. Therefore, Bob only needs to construct second, valid instances of the target transaction, Tx p /Tx p ', and claim payment from one of them (any attempt to redeem the same UTXO twice will be rejected by the network 106 as invalid). Assuming all goes well, Bob will therefore create a version of the target transaction that claims payment from the last instance of the first transaction in the sequence.

実施形態では、第1トランザクションの各インスタンスTx,Tx,Tx…又は最後のインスタンスTxnは、(例えば図5を参照して)上述したように、該トランザクションのアウトプットの中で、Aliceからの支払いを償還するための複数の代替条件を定義する。この場合、シーケンスの中の最後のデータ部分DnのAliceの肯定応答と共に、彼女は、ターゲットトランザクションの第2バージョンTxp’も提供するか、又は少なくとも彼女の署名を提供して、BobがTxp’を構成できるようにする。これは、Bobが、Bobにペナルティを課す第1条件ではなく、好ましい第2条件に基づき、完全なシーケンス(例えば、映画全体)に対する支払いを請求することを可能にする。Bobが部分Dのストリーミングを停止し、Aliceが不満である場合、彼女は、必要に応じて第2条件を満たすために彼女の署名を提供しなくてよい。従って、Bobは、第1のあまり好ましくない条件に基づき支払いを請求できるだけである。他方で、Aliceが、不満ではないが、途中で更なる部分を要求することを止めた場合(例えば、彼女が単に映画を観るのを止めることを選んだ)、第1トランザクションのインスタンスの各々Tx,Tx,Tx…がそれまでに複数の代替条件を含んでいるとすると、Aliceは、Txp’又は彼女の署名を提供してよく、Bobが、好ましい第2条件に基づき、それまでのシーケンスに対する支払いを請求できるようにする。 In an embodiment, each instance Tx 1 , Tx 2 , Tx 3 ... or the last instance Tx n of the first transaction defines in its output several alternative conditions for redeeming the payment from Alice, as described above (e.g. with reference to FIG. 5). In this case, together with Alice's acknowledgement of the last data portion D n in the sequence, she also provides a second version Tx p ' of the target transaction, or at least her signature, to allow Bob to construct Tx p '. This allows Bob to claim payment for the complete sequence (e.g. the whole movie) under a preferred second condition, rather than the first condition, which penalizes Bob. If Bob stops streaming portion D and Alice is dissatisfied, she does not have to provide her signature to satisfy the second condition, if necessary. Thus, Bob can only claim payment under the first, less favorable condition. On the other hand, if Alice is not dissatisfied but stops requesting further parts midway (e.g., she simply chooses to stop watching the movie), then, given that each of the first transaction instances Tx 1 , Tx 2 , Tx 3 ... contains multiple alternative conditions up to that point, Alice may provide Tx p ' or her signature, allowing Bob to claim payment for the sequence up to that point based on her preferred second condition.

第1トランザクションのインスタンスTxi、i=1,2,3…は、異なるメッセージに対して共通のUTXOを使用するが、複数の署名を使用する。従って、この文脈におけるインスタンスは、(以下に議論する)トランザクションのインスタンスとしての、Aliceからのデータに対するそれぞれの「要求」を表す。これは、値及び要求されたデータを変えることが署名済みメッセージを変えるからである。 The first transaction instances Tx i , i=1,2,3... use a common UTXO for different messages, but multiple signatures, so an instance in this context represents each "request" for data from Alice as an instance of a transaction (discussed below), since changing the value and requested data changes the signed message.

第2トランザクションのバージョンTxp/Txp’は、同一のメッセージに対して、共通のUTXOを使用するが、複数の署名を使用する。従って、この文脈では、バージョンは、「適応されていない」及び「適応された」形式のトランザクションを、トランザクションのそれぞれのバージョンとして表す。これは、スクリプトレベルの適応が署名済みメッセージを変更しないからである。 The second transaction version Tx p /Tx p ' uses a common UTXO but multiple signatures for the same message. Thus, in this context, versions represent the "unadapted" and "adapted" forms of the transaction as the respective versions of the transaction, since script-level adaptation does not change the signed message.

注:どのパーティが第1トランザクションTx…を生成し及び/又はブロードキャストするかに関して先に議論した変形、及びターゲットトランザクションの第1及び第2バージョンTxp/Txp’のいずれかもここで適用されてよい。例えば、第三者は、Alice又はBobの代わりにこれらのうちの一部又は全部を生成し及び/又はブロードキャストし得る。或いは、Bobが、ブロードキャストするためにTxp/Txp’をネットワークへ彼自身で送信するか又はAliceへ送信するか、彼の署名をAliceへ送信してAliceがターゲットトランザクションTxp/Txp’を構成するようにしてよい、等である。簡潔さのために、これらの種々のオプションは、ここで再び完全に繰り返されない。 Note: the variants discussed above regarding which party generates and/or broadcasts the first transaction Tx 1 ..., and either the first and second versions of the target transaction Tx p /Tx p ' may also apply here. For example, a third party may generate and/or broadcast some or all of these on behalf of Alice or Bob. Alternatively, Bob may send Tx p /Tx p ' to the network himself or to Alice for broadcast, send his signature to Alice so that she constructs the target transaction Tx p /Tx p ', etc. For the sake of brevity, these various options will not be repeated in full here again.

例として、映画産業を考える。スクリプトサイズ限度は、執筆時点で10キロバイトである。従って、映画毎に、多数の8キロバイト部分に分割できる。他の制約がある場合、部分のサイズは更に小さくてよく、或いは、スクリプトサイズの限度が増大される場合、更に大きくてよい。部分が定義されると、次に、マークルツリーが構成でき、ルートハッシュが、映画タイトルと一緒に公にリストされる。 As an example, consider the movie industry. The script size limit is 10kB at the time of writing. Each movie can therefore be divided into a number of 8kB parts. If there are other constraints, the part sizes can be smaller, or larger if the script size limit is increased. Once the parts are defined, a Merkle tree can then be constructed and the root hashes are publicly listed along with the movie titles.

簡単のために、議論は、マイニング手数料が暗示的に適用されるとする。明示的インプットが明示的アウトプット及び暗示的トランザクション手数料をカバーしない場合、別の暗示的インプットが存在得るとする。 For simplicity, the discussion assumes that mining fees are implicitly applied. There may be other implicit inputs if the explicit inputs do not cover the explicit outputs and implicit transaction fees.

Aliceは、Bobから映画を購入しようとしている。映画は、n+1個の小さなデータパックD,...,Dn、及びルートハッシュHrootを有するそれらのマークルツリーTにより定義される。方法は、AliceからBobへの一連のトランザクションTX,TX,...,TXnを構成する。各トランザクションTXiは、Diに対する要求、及びDi-1の受信の肯定応答に対する。理想的には、支払いチャネル301が正しく閉じられるとき、AliceからBobへの支払いを達成するために、2つのトランザクションTX'n及びTX'pのみが発行される。このシナリオは、図7に示される。図7は、使用例2におけるAliceとBobとの間の支払いチャネル301のシーケンス図である。BobからAliceへの1つの初期メッセージがあり、次に各データパケットについてn個のメッセージペアが続き、チャネルを閉じるための2つの最終メッセージがある。 Alice wants to buy a movie from Bob. The movie is defined by n+1 small data packs D 0 ,...,D n and their Merkle tree T with root hash H root . The method composes a sequence of transactions TX 1 ,TX 2 ,...,TX n from Alice to Bob, where each transaction TX i is for a request for D i and an acknowledgment of receipt of D i-1 . Ideally, when the payment channel 301 is closed correctly, only two transactions TX' n and TX' p are issued to achieve the payment from Alice to Bob. This scenario is illustrated in Fig. 7. Fig. 7 is a sequence diagram of the payment channel 301 between Alice and Bob in use case 2. There is one initial message from Bob to Alice, followed by n message pairs for each data packet, and two final messages to close the channel.

第1ラウンド-Aliceの番:
最初に、Bobは、Aliceに、D、及び期待されるデータパックを含む完全なマークルツリーを送信する。Aliceは、ルートハッシュが実際に彼女の選択した映画タイトルに属することをチェックし、Dのマークルパスを検証する。Aliceが受信したデータに満足すると、彼女は、彼女がTX1を受信したことの肯定応答をするために、及びDを要求したいと思い、TXを構成し得る。このトランザクションは以下の形式をとり得る:

Figure 0007646570000004
Round 1 – Alice's turn:
First, Bob sends Alice the complete Merkle tree, including D0 and the expected data packs. Alice checks that the root hash indeed belongs to her selected movie title and verifies the Merkle path of D0 . Once Alice is satisfied with the data she has received, she may wish to acknowledge that she has received TX1 and request D1 , and may construct TX1 . This transaction may take the following form:
Figure 0007646570000004

このインスタンスの例は図9に示される。この単一のトランザクション設計は、3つの意図される機能を有する。トランザクション内の幾つかのフィールドに追加の含意を割り当てることにより、データトレードシナリオにおいて必要な複数のメッセージを、たった1つのトランザクションテンプレートにより置き換えることが可能である。Sig(PA,Tx)は、前のデータパックが受信され及び満足のいくものであることを肯定応答する署名である。OP_DUP OP_SHA256 <H(D)> OP_EQUALは、次のデータパックを求める要求である。500ユニットが、次のデータパックのために支払われる。 An example of this instance is shown in Figure 9. This single transaction design has three intended functions. By assigning additional implications to some fields in the transaction, it is possible to replace the multiple messages required in a data trade scenario with just one transaction template. Sig(P A ,Tx 1 ) is a signature that acknowledges that the previous data pack was received and is satisfactory. OP_DUP OP_SHA256 <H(D 1 )> OP_EQUAL is a request for the next data pack. 500 units are paid for the next data pack.

Txの(1又は複数の)インプットは、少なくともインプット0を含む。これは、Aliceに対してロックされた前のトランザクションTxのUTXOへのポインタを含む。該UTXOは、Txのアウトプット0より大きい(例えば2000ユニット)額である(以下を参照)。Txのインプット0は、インプットのアンロックスクリプトの中にAliceの署名、及び他のパーティがインプットを追加できるようにするフラグも(「ANYONECANPAY」)含む。 The input(s) of Tx1 includes at least input 0, which contains a pointer to the UTXO of a previous transaction, Tx0 , that was locked for Alice. The UTXO is of a larger amount (e.g., 2000 units) than output 0 of Tx1 (see below). Input 0 of Tx1 also contains Alice's signature in the input's unlock script, and a flag that allows other parties to add the input ("ANYONECANPAY").

Txの(1又は複数の)アウトプットは、少なくともアウトプット0を含む。これは、Txのインプット0より少ない、(最初の)少額の(例えば500ユニットの)デジタルアセットを指定する。Txのアウトプット0は、以下の条件のうちのいずれかによりこれをアンロック可能にするロックスクリプトも含む;
(i)後続のトランザクションTxpのインプット内のアンロックスクリプトが、D及びBobの署名を含む;
(ii)後続のトランザクションTxp’のインプット内のアンロックスクリプトが、Aliceの署名及びBobの署名を含む;或いは、
(iii)タイムアウト限度が経過し、後続のトランザクションのインプット内のアンロックスクリプトがAliceの署名を含む。
The output(s) of Tx 1 include at least output 0, which specifies a small (initial) amount of digital assets (e.g., 500 units) less than input 0 of Tx 1. Output 0 of Tx 1 also includes a locking script that allows it to be unlocked by any of the following conditions:
(i) The unlock script in the input of a subsequent transaction Tx p includes D1 and Bob’s signature;
(ii) the unlock script in the input of a subsequent transaction Tx p ′ includes Alice’s signature and Bob’s signature; or
(iii) The timeout limit elapses and the unlock script in the input of the subsequent transaction includes Alice's signature.

条件(i)に関し、BobがAliceにハッシュツリーとも呼ばれるマークルツリーを送信しているので、Aliceは、どんなデータ部分が期待されるかを知っている。これは、彼女に、Dのハッシュを決定させる。これは、彼女がハッシュチャレンジによりこの条件を含めるのに十分である(Txのロックスクリプトは、Dのハッシュと、ハッシングされるとTxp,のインプットのアンロックスクリプト内で提示された値がロックスクリプト内の値と一致することをチェックする何らかのコードを足したものを含む)。この条件は、BobがAliceの署名を有しないで支払いを請求したい場合、彼がブロックチェーン150にDをアップロードしなければならないことを意味する。Dは彼独自のデータであるので、更にDのサイズは高いマイニング手数料を生じるので、彼はそうすることを好まない。この同じ技術は、後続のデータ部分D,D等にも使用できる。 Regarding condition (i), since Bob has sent Alice a Merkle tree, also called a hash tree, Alice knows what data portion to expect. This allows her to determine the hash of D1 . This is enough for her to include this condition by a hash challenge (the lock script of Tx1 contains the hash of D1 plus some code that checks that when hashed, the value presented in the unlock script of input Txp , matches the value in the lock script). This condition means that if Bob wants to claim a payment without having Alice's signature, he must upload D1 to the blockchain 150. He does not want to do this because D1 is his own data, and furthermore the size of D1 would result in high mining fees. This same technique can be used for subsequent data portions D2 , D3 , etc.

条件(ii)は、代わりにBobがAliceに彼女の署名を与えさせる場合には、彼はデータをアップロードする必要なく、支払いを請求できる。しかしながら、彼は未だそうすることを望まないとする。 Condition (ii) means that if Bob instead gets Alice to give her signature, he can request payment without needing to upload the data. However, suppose he still does not want to do that.

条件(iii)は任意である。それは、Bobが特定の指定されたタイムアウト期間の後に何らかの理由で請求しない場合に(例えば、Bobが処理に関与しない)、Aliceに、Tx1のアウトプット0内の量の返還を請求する能力を与える。720ブロックの特定のタイムアウト値は単なる例であることが理解される。より一般的には、タイムアウト期間は、ブロック数、又は秒のような人間の時間で定義されてよく、任意の値に設定されてよい。絶対的な時間点で終了する、又は経過時間量として定義され得る。 Condition (iii) is optional. It gives Alice the ability to claim back the amount in output 0 of Tx1 if Bob does not claim for any reason after a certain specified timeout period (e.g., Bob is not involved in the transaction). It is understood that the specific timeout value in block 720 is merely an example. More generally, the timeout period may be defined in number of blocks, or in human time such as seconds, and may be set to any value. It may end at an absolute time point, or be defined as an amount of elapsed time.

Txも、任意的に、1つ以上の更なるアウトプットを含んでよい。実施形態では、これらは、アウトプット1及びアウトプット2を含む。アウトプット1は、インプット量に等しく、Alice(Aliceの変更)に対してロックしているデジタルアセットの額を定義するスクリプトを含む。例えば、これは、2000-500ユニット=1500ユニットである。 Tx 1 may also optionally include one or more further outputs. In an embodiment, these include Output 1 and Output 2. Output 1 includes a script that defines the amount of digital assets locked for Alice (Alice's changes) equal to the input amount. For example, this is 2000-500 units=1500 units.

アウトプット2はアウトプット1に等しく、Bob(「アウトプット1内のAliceのお釣り(change)と同じようにBobに支払う」)に対してロックしているデジタルアセットの額を定義するスクリプトを含む。この効果は、差分を構成するために誰か他の者が(実際にはBobしかいないだろう)彼自身の別のインプット1をTxに追加しない限り、合計出力(例えば500+1500+1500ユニット=3500ユニット)が、常に入力より大きいことである。 Output 2 is equal to Output 1, and contains a script that defines the amount of digital assets locked for Bob ("pay Bob the same as Alice's change in Output 1"). The effect of this is that the total output (e.g. 500 + 1500 + 1500 units = 3500 units) will always be greater than the input, unless someone else (which in practice would only be Bob) adds another Input 1 of his own to Tx 1 to make up the difference.

アウトプット2は、AliceがBobの承認なしにトランザクションを公開することを防ぐために設計されたトリックである。支払人として、Aliceは、最初にTXをブロードキャストする動機がない。しかしながら、数ラウンドの後、AliceがBobにより多くを支払う他のトランザクションが存在するとき、Aliceは、Bobが彼の支払いを請求するために後のインスタンスを使用する前に、TXを用いてそれをネットワーク106へブロードキャストすることにより、それらを無効にし得る。アウトプット2を含むことにより、Bobがアウトプットとインプットとの間の不足額をカバーするために彼自身のインプット(インプット1)をTXに追加するまで、TXは、有効にならない。AliceがSIGHASHフラグ「ALL|ANYONECANPAY」を使用するので、Bobは追加のインプットを追加できる。結果として、TXは、Bobによってのみブロードキャストされる可能性がある。Aliceは、Txを有効にするために必要な追加インプットを追加したくない。何故なら、これは、彼女がシステムを騙さない場合には、彼女により多くの費用がかかるからである。 Output 2 is a trick designed to prevent Alice from publishing a transaction without Bob's approval. As a payer, Alice has no incentive to broadcast TX 1 initially. However, after a few rounds, when there are other transactions in which Alice pays Bob more, Alice can invalidate them by broadcasting it to the network 106 with TX 1 before Bob can use the later instance to claim his payment. By including Output 2, TX 1 will not be valid until Bob adds his own input (input 1) to TX 1 to cover the shortfall between the output and the input. Bob can add an additional input because Alice uses the SIGHASH flag "ALL|ANYONECANPAY". As a result, TX 1 can only be broadcast by Bob. Alice does not want to add the additional input required to make TX 1 valid because this would cost her more if she were not to cheat the system.

Aliceのお釣りは、Aliceのインプット(インプット0)の値から、Bobの支払い(アウトプット0)の値を差し引いたものでると定義される。図8のグラフが示すように、Bobの保険金(アウトプット2)は、最後のデータ部分が送信される前は、合計アウトプット(破線)が常にインプットより大きいことを保証する。 Alice's change is defined as the value of Alice's input (input 0) minus the value of Bob's payment (output 0). As the graph in Figure 8 shows, Bob's insurance (output 2) ensures that the total output (dashed line) is always greater than the input before the last data piece is sent.

より一般的には、Txの合計アウトプット値が合計インプット値より大きい、従って、Txのアウトプット0を請求するためにBob自身のインプットを追加するようBobに要求し、及びAliceがTxをブロードキャストする動機をなくす状況を作り出すために、アウトプットの他の組合せが使用され得る。 More generally, other combinations of outputs can be used to create a situation where the total output value of Tx1 is greater than the total input value, thus requiring Bob to add his own input to claim the 0 output of Tx1 and disincentivizing Alice from broadcasting Tx1 .

スクリプト言語でアウトプット0において3つの条件(i)、(ii)、(iii)を実施する例として、例えば以下のようにハッシュパズル及び条件付きオペコードを使用できる。

Figure 0007646570000005
As an example of implementing the three conditions (i), (ii), and (iii) on output 0 in a scripting language, one can use hash puzzles and conditional opcodes, for example as follows:
Figure 0007646570000005

第1ラウンド-Bobの番:
Bobは、トランザクションTXを受信すると、単にAliceへDを送信する。Bobは、TX1内の支払いを請求し得るので、Aliceからの支援を有しないで、以下を行うことにより、これを安全に行うことに留意する。先ず、Bobは、TX内のアウトプット2の値をカバーするためにアウトポイント(TxIDB,vout=0)を使用して、彼自身のインプットを追加することにより、TX'を生成する。次に、Bobは、支払いを請求するために別のトランザクションTXpを生成する。

Figure 0007646570000006
Round 1 – Bob's Turn:
When Bob receives transaction TX1 , he simply sends D1 to Alice. Note that Bob can claim the payment in TX1, and does this safely, without assistance from Alice, by doing the following: First, Bob creates TX1' by adding his own input using an outpoint (TxID B , vout=0) to cover the value of output 2 in TX1 . Then, Bob creates another transaction TXp to claim the payment.
Figure 0007646570000006

Bobは、次に、両方のトランザクションをネットワーク106へブロードキャストしてよい。しかしながら、Bobはトランザクション内でDを開示しなければならないので、Bobにとってこれは理想的な状況ではない。これは、チャネルの想起閉鎖であると考えられる。しかしながら、Aliceが正しい手順に従い支払いチャネルを閉じる場合(後述する)、Bobはこれを行う必要がない。 Bob may then broadcast both transactions to the network 106. However, this is not an ideal situation for Bob, since he would have to disclose D1 in the transaction. This is considered a recall closure of the channel. However, if Alice follows the correct procedure to close the payment channel (described below), Bob does not need to do this.

第2ラウンド-Aliceの番:AliceがDを受信しコンテンツに満足すると、彼女は、次のデータパックのために以下のトランザクション内を構築する。このトランザクションは、Dを受信したことの肯定応答とも考えられる。

Figure 0007646570000007
Round 2 - Alice's turn: Once Alice receives D1 and is satisfied with the content, she constructs the following transaction for the next data pack. This transaction can also be considered as an acknowledgment of receiving D1 .
Figure 0007646570000007

TX及びTXを比較すると、DがDに変更され、アウトプット0の値が500ユニットのデジタルアセットから1000ユニットへと増大されている。これらの2つの変更の結果として、他のアウトプットは異なる値を有する(Aliceが同じ未使用アウトポイントを使用しているとする)。更に、これらの変更はトランザクションの適応性のある部分には行われないので、AliceはTXのための新しい署名を生成しなければならない。 Comparing TX1 and TX2 , D1 has been changed to D2 , and the value of output 0 has been increased from 500 units of the digital asset to 1000 units. As a result of these two changes, the other outputs have different values (assuming Alice is using the same unused outpoint). Furthermore, because these changes are not made to the adaptive part of the transaction, Alice must generate a new signature for TX2 .

第2ラウンド-Bobの番:
BobはTXを受信すると、単にAliceへDを送信する。
Round 2 – Bob's Turn:
When Bob receives TX 2 , he simply transmits D 2 to Alice.

Bobは、第1ラウンドと同じ方法でAliceの支援を有しないで支払いを請求できるので、前の同じように、これを安全に行う。Bobは、ここでも、TX内のアウトプット2をカバーするために、ここでも(TxIDB,vout=0)から彼自身のインプットを追加し、TX'内を生成する。Bobは、支払いを請求するために別のトランザクションTXpも生成する。

Figure 0007646570000008
Bob does this safely, as before, since he can claim the payment without Alice's help in the same way as in the first round. Bob again adds his own input from (TxID B , vout=0) to cover output 2 in TX 2 , generating TX 2 '. Bob also generates another transaction TX p to claim the payment.
Figure 0007646570000008

Bobは、次に、両方のトランザクションをネットワークへブロードキャストしてよい。 Bob may then broadcast both transactions to the network.

AliceとBobが協力してチャネルを閉じる場合、Bobは、第1ラウンドで説明したようにこれを行うことを回避できる。 If Alice and Bob cooperate to close the channel, Bob can avoid doing this as described in the first round.

最終ラウンド-Aliceの番:
数ラウンドの後に、Aliceは、最後のデータパックDnを要求するためにTXnを構築する。

Figure 0007646570000009
Final Round – Alice's Turn:
After a few rounds, Alice constructs TX n to request the final data pack D n .
Figure 0007646570000009

最終ラウンド-Bobの番:
Bobは、最終データパックDnにより応答する。
Final Round – Bob's Turn:
Bob responds with the final data pack D n .

チャネルの閉鎖:支払いチャネルを閉じるために、AliceとBobとの間に幾つかの相互作用がある。Alice又はBobのいずれかは、チャネル301を閉じる彼らの意図を、他方へシグナリングできる。一般性を失わずに、BobからAliceへ送信される最後のデータパックがDnであるとする。Bobは、Dnを要求するトランザクションTXnを見付け、アウトプット2をカバーするために彼自身のインプットを追加して、TXn'を生成する。Bobは、以下のようにTXpを生成する。

Figure 0007646570000010
Closing the channel: There are several interactions between Alice and Bob to close the payment channel. Either Alice or Bob can signal to the other their intention to close the channel 301. Without loss of generality, let D n be the last data pack sent from Bob to Alice. Bob finds a transaction TX n that requests D n and adds his own input to cover output 2, generating TX n '. Bob generates TX p as follows:
Figure 0007646570000010

Bobは、両方のトランザクションTXn’及びTXpを、支払いチャネル301を介してAliceへ直接送信する。Aliceは、TXn’及びTXpのインプットが彼女の期待通り実際に関連するかをチェックする。Aliceは、TXpに署名し、Dnを彼女の署名で置き換えて、TXp'を生成する。

Figure 0007646570000011
Bob sends both transactions, TX n ' and TX p , directly to Alice over the payment channel 301. Alice checks that the inputs TX n ' and TX p are indeed related as she expects. Alice signs TX p and replaces D n with her signature, producing TX p '.
Figure 0007646570000011

AliceはBobにTXp'を送信する。Bobは、TXn’及びTXp'をネットワーク106へブロードキャストする。代替として、Aliceは、TXn’及び/又はTXp'をブロードキャストするか、又はAlice及びBobの代わりにブロードキャストするようそれらの一方又は両方を第三者へ送信し得る。Aliceは、いつでもチャネルを閉じることを選択できることに留意する。 Alice sends TX p ' to Bob. Bob broadcasts TX n ' and TX p ' to the network 106. Alternatively, Alice may broadcast TX n ' and/or TX p ', or send one or both of them to a third party to broadcast on behalf of Alice and Bob. Note that Alice can choose to close the channel at any time.

図7に、以下の2つの方法を示す:(A)チャネルが、トランザクションのベアをブロードキャストすることによりBobにより一方的に閉じられる;及び(B)ペアを形成する2つのトランザクションが、チャネルの閉鎖のときに両方ともブロードキャストされ、チャネルがネットワーク106と通信することなく実質的に「開放された(opened)」オフチェーンであることを示す。 Figure 7 shows two ways: (A) the channel is unilaterally closed by Bob by broadcasting a bare copy of the transaction; and (B) the two transactions that form the pair are both broadcast upon channel closure, indicating that the channel is effectively "opened" off-chain without communicating with the network 106.

シーケンスを再生するために、Txに応答して、Bobは、DをAliceに送信する。AliceがBobに肯定応答するためにTxを送信し、次に、BobはD等を送信する。Txは、Txと同じであるが、DがDで置き換えられ、アウトプット0の量が増大されている。Txでは、DはDで置き換えられ、ここでもアウトプット0の量が増大される。実施形態では、アウトプット0の量は、iと共に、つまり各チャンク及び肯定応答で送信されるTxと共に、線形に増大する。代替として、例えば、シーケンスを完了する更なる動機を与えるようシーケンスの終わりに向けてより高い重みを与えるために、別の増大する関係が使用されることは排除されない。 To play back the sequence, in response to Tx 1 , Bob sends D 2 to Alice. Alice sends Tx 2 to acknowledge Bob, who then sends D 3 , etc. Tx 2 is the same as Tx 1 , but D 1 is replaced by D 2 and the amount of output 0 is increased. In Tx 3 , D 2 is replaced by D 3 , again increasing the amount of output 0. In an embodiment, the amount of output 0 increases linearly with i, i.e. with the Tx sent with each chunk and acknowledgement. Alternatively, it is not excluded that another increasing relationship could be used, for example to give a higher weight towards the end of the sequence to provide an additional incentive to complete the sequence.

Bobは、基準(ii)に基づき、Tx…Txiのうちのいずれか1つを一方的に請求できる。これを行うために、Bobは、それを適応してTxi’を生成する。適応は、Bobのデジタルアセットの一部のインプットを追加して、差分を構成し、次に、Txi.を使用するために自身のインプットの中にDiを含む別のトランザクションTxpを生成することを含む。Txpは、Bobに対して条件付きでロックされている。Bobは、彼のインプットを追加し、先のトランザクションTx又はTx、等のうちの1つを使用し得るが、そうする価値はない。彼は、映画を送信し続け、最後には全額を得ることを望む。また、Bobは、彼の映画のチャンクのうちの1つをブロックチェーンに発行しなければならないので、基準(ii)に依存しないことを望む。 Bob can unilaterally claim any one of Tx 1 ...Tx i based on criterion (ii). To do this, Bob adapts it to generate Tx i '. The adaptation involves adding some input of Bob's digital assets to make up the difference, and then generating another transaction Tx p that includes D i in its input to use Tx i . Tx p is conditionally locked to Bob. Bob could add his input and use one of the previous transactions Tx 1 or Tx 2 , etc., but there is no value in doing so. He wants to keep sending the movie and get the full amount at the end. Also, Bob wants to not rely on criterion (ii) because he has to publish one of his movie chunks to the blockchain.

各Tx,Tx,Tx…のインプットはTxの同じUTXOを指定することに留意する。従って、それらのうちのいずれか1つがネットワークへブロードキャストされ、任意の所与のノード104で検証される場合、それらのうちの任意の他のものは、該ノードにおいて有効であるとは考えない(有効の条件は、Txが別のトランザクションにより既に有効に使用されたUTXOを使用しようとしないことである)。異なるノード104は、最初に異なるインスタンスを受信する可能性があり、従って、1つのインスタンスがマイニングされる前に、どのインスタンスが「有効」であるかについて矛盾するビューを有することがあり、その時点で、全部のノード104は、マイニングされたインスタンスのみが有効なインスタンスであることに合意する。ノード104が1つのインスタンスを有効であるとして受け入れ、次に第2のインスタンスがブロックチェーン150に記録されていることを発見した場合、該ノード104は、これを受け入れ(なければならず)、最初に受け入れた未だマイニングされていないインスタンスを破棄する(つまり、無効であるとして扱う)。 Note that each input Tx 1 , Tx 2 , Tx 3 ... specifies the same UTXO of Tx 0. Thus, if any one of them is broadcast to the network and validated at any given node 104, any others of them will not be considered valid at that node (a condition for validity is that Tx does not attempt to use a UTXO that has already been validly used by another transaction). Different nodes 104 may initially receive different instances and thus may have conflicting views of which instances are "valid" before one instance is mined, at which point all nodes 104 agree that the only valid instance is the one that was mined. If a node 104 accepts one instance as valid and then discovers that a second instance has been recorded in the blockchain 150, it (must) accept it and discard (i.e., treat as invalid) the first instance it accepted that has not yet been mined.

Bobが早い段階で現金に換え、映画の送信を停止した場合、Aliceは、彼女が受信したより1つ多くのチャンクに支払うだけであり、500しか失わない。Aliceは、任意の時点で保釈金を払うことができるが、彼女がそうする場合、Bobは、Aliceが支払わなかった映画の1つより多くのチャンク(例えば、500ユニットの価値)を彼女に送信しない。 If Bob cashes out early and stops sending the movie, Alice only pays for one more chunk than she received and only loses 500. Alice can bail at any time, but if she does, Bob will not send her more than one chunk (say, 500 units worth) of the movie that she did not pay for.

少額から開始して、映画の終わりに向かってその都度、額が増大し、全部のトランザクションがTx内の同じUTXOを使用しようとするので、いずれか1つにおける換金は任意の他のものを無効にする。また、実施形態では、アウトプットの合計は、Bobが彼自身のインプットを追加するまで、必ずしもインプットより大きくない。これは、インプットレベルの適応性の例である。 Starting small, the amount grows each time towards the end of the movie, and because all transactions attempt to use the same UTXO in Tx 0 , cashing in any one invalidates any others. Also, in an embodiment, the sum of the outputs is not necessarily greater than the inputs until Bob adds his own input. This is an example of input-level adaptability.

Bob及びAliceの両者が映画の終わりまで待つ場合、Bobは、Aliceが署名するように、Txn’をAliceへ送信する。その結果、Dnのハッシュが彼女の署名により置き換えられる。これは、Bobが、データの任意のチャンクDを発行することなく、完全な支払いを請求することを可能にする。これは、スクリプトレベルの適応性の例である。 If both Bob and Alice wait until the end of the movie, Bob sends Tx n ' to Alice for her to sign, which replaces the hash of D n with her signature. This allows Bob to claim the full payment without issuing any chunk of data D. This is an example of script-level adaptability.

ブロックチェーン上のデータ輻輳を回避するために、処理は、何らかのデータパッケージ又はデータ受信者の署名を使用してアンロック可能なロックスクリプトを使用する。トランザクションの適応性を使用することにより、データ受信者は、アンロックスクリプト内のデータを彼女又は彼の署名で置き換えることができる。この動作は、データが受信されたことに肯定応答する又は支払いチャネルの閉鎖を確認するだけではなく、トランザクションからデータを削除して空間を節約する。 To avoid data congestion on the blockchain, the process uses a lock script that can be unlocked using any data package or the signature of the data recipient. Using transaction adaptability, the data recipient can replace the data in the unlock script with her or his signature. This action not only acknowledges that the data was received or confirms the closure of the payment channel, but also removes the data from the transaction to save space.

Bobには、トランザクションの値の増分的増加を考えると、彼がAliceから受信する最後のトランザクション以外のトランザクションを発行する動機がない。Aliceが途中でチャネルを離れた場合、Bobは、単に、彼がAliceから受信した最後のトランザクションを、支払いを請求するトランザクションと一緒に発行する。彼がAliceの適応されたトランザクションを受信しなかった場合、彼は、支払いを請求するために関連するデータパックを開示しなければならない。実施形態では、データ信頼性に対する強い要求がある場合、BobはAliceへ送信するデータを暗号化し、トランザクション内で復号鍵を開示できる(後述する)。 Bob has no incentive to issue any transactions other than the last one he receives from Alice, given the incremental increase in transaction value. If Alice leaves the channel midway, Bob simply issues the last transaction he received from Alice along with a transaction to claim payment. If he does not receive Alice's adapted transaction, he must disclose the associated data pack to claim payment. In an embodiment, if there is a strong requirement for data authenticity, Bob can encrypt the data he sends to Alice and disclose the decryption key in the transaction (described below).

Aliceにとっては、しかしながら、彼女が十分なデータパックを受信すると、第1トランザクションを発行する動機がある。最初のトランザクション及び最後のトランザクションが両方とも有効であるとき、彼女が最後に通信されたトランザクションを無効にすることに成功するかどうかは確かではない。このシナリオを完全に回避するために、実施形態は、誰かがアウトプットとインプットとの間の差分をカバーしない限り、トランザクション自体を無効にする追加のアウトプットを含む。Aliceがトランザクションを有効にするために、彼女は、追加インプットを提供し、それはトランザクションをブロードキャストするという彼女の目的を覆す。 For Alice, however, there is an incentive to issue the first transaction once she receives a sufficient data pack. When the first and last transactions are both valid, it is uncertain whether she will succeed in invalidating the last communicated transaction. To avoid this scenario entirely, embodiments include an additional output that invalidates the transaction itself unless someone covers the difference between the output and the input. For Alice to make the transaction valid, she provides an additional input, which defeats her purpose of broadcasting the transaction.

Bobがオフラインになる場合、Aliceは、映画を鑑賞し続けることができない。しかしながら、彼女は、彼女が観たよりも多くを支払わない。彼女は、Bobが戻ってくるのを待つか、又は単に別のサービスプロバイダへと移動し、彼女が停止したところから開始する。 If Bob goes offline, Alice cannot continue watching the movie. However, she does not pay for more than she watched. She can wait for Bob to come back, or simply move to another service provider and start where she left off.

このために必要な資金供給トランザクションは、支払いチャネルを形成しないことに留意する。更に、Aliceは、任意のポイントでストリーミングサービスを再開するために再接続できるという柔軟性がある。つまり、支払いチャネルを確立するためのオーバヘッドがない。 Note that the funding transaction required for this does not form a payment channel. Furthermore, Alice has the flexibility to reconnect to resume the streaming service at any point; there is no overhead of establishing a payment channel.

実施形態は、支払いチャネル内の全てのリスクを解決する。依然として、Aliceは、支払いチャネルの外部で彼女のUTXOを二重支払いすることが可能な場合がある。実施形態は、これを防ぐために、3つのオプションのうちの任意の1つ以上を防ぐことができる。AliceがUTXOを二重支払いしようとするとき、Aliceに銀行預金のためのシークレット鍵を強制的に開示させるための技術が採用されるべきである。この場合、Bobは、全部の預金を請求することができる。第2のオプションも、Aliceの肯定応答を法的に拘束する。つまり、Bobの支払い請求トランザクションに対するAliceの署名は、彼女のアイデンティティの拘束力のある証明として考えられる。Aliceのいかなる不正行為も、法執行の対象になる。第3のオプションは、Bobが、時間に渡り、例えば5分毎に、支払いチャネルを終了し再開することである。頻度は、リスクに対するBob自身の評価に従い、Bobにより割り当てることができる。資金供給トランザクションが必要ないので、支払いチャネルを再開することによるオーバヘッドがないことに留意する。 The embodiment solves all the risks in the payment channel. It may still be possible for Alice to double-spend her UTXO outside of the payment channel. To prevent this, the embodiment can prevent any one or more of three options. When Alice tries to double-spend her UTXO, a technique should be employed to force Alice to reveal the secret key for the bank deposit. In this case, Bob can claim the entire deposit. The second option also makes Alice's acknowledgment legally binding. That is, Alice's signature on Bob's claim transaction is considered as binding proof of her identity. Any fraudulent behavior by Alice is subject to law enforcement. The third option is for Bob to terminate and restart the payment channel over time, for example every 5 minutes. The frequency can be assigned by Bob according to his own assessment of the risk. Note that there is no overhead in restarting the payment channel since no funding transaction is required.

データ暗号化:データ信頼性は、データが公衆ネットワークを介して交換されるときに、要件である場合が多い。前の章では、データ受信側が受信されるものが何かを正確に知っていると仮定した。しかしながら、データが暗号化されるとき、なんら通信をしないで、どんな暗号文であるか又はどんなハッシュ値が予想されるかは予め知ることが困難である。これは、ロックスクリプト内のハッシュパズルを構成する要件を引き起こす。これを軽減するために、実施形態では、データの売り手は、暗号文のハッシュ値を、送信する前にデータの受信側へ通信できる。データの受信側は、与えられたハッシュ値を用いて支払いトランザクションを構成する。暗号データを受信すると、データ受信側は、データを復号し、データが期待されているかどうかを検証できる。期待されたものである場合、全てが良好である。そうでない場合、最悪の場合は、受信側が金銭を失う。しかしながら、受信側が失う額は、データパケット当たりの価格で区切られる。映画の場合、それはおそらく約500ユニットであり、例えば映画での合計は5ドルになる。経済的価値が小さく、評判への影響が遙かに大きいことを考えると、データの売り手が不正行為をする動機付けがない。 Data encryption: Data authenticity is often a requirement when data is exchanged over a public network. In the previous chapter, we assumed that the data receiver knows exactly what is being received. However, when data is encrypted, it is difficult to know in advance what ciphertext or what hash value is expected without any communication. This gives rise to the requirement to construct a hash puzzle in the lock script. To mitigate this, in an embodiment, the seller of the data can communicate the hash value of the ciphertext to the receiver of the data before sending it. The receiver of the data constructs a payment transaction with the given hash value. Upon receiving the encrypted data, the receiver of the data can decrypt the data and verify if the data is as expected. If it is, all is well. If it is not, in the worst case, the receiver loses money. However, the amount the receiver loses is bounded by the price per data packet. For a movie, it is probably around 500 units, which amounts to, say, $5 for a movie. Given that the economic value is small and the reputational impact is much larger, there is no incentive for the seller of the data to cheat.

幾つかの実施形態は、データの売り手とそれぞれのデータの買い手との間の対称暗号からの共有シークレット鍵を確立するメカニズムを実装してよい。従って、送信中の全部のデータは暗号化できる。 Some embodiments may implement a mechanism to establish a shared secret key from a symmetric cipher between the seller of data and the buyer of the respective data. Thus, all data in transit can be encrypted.

例示的な使用例3-世論調査及び投票
別の例示的な使用例では、第1トランザクションTxの異なる代替条件は、例えば図5に示され、投票を記録する手段としてブロックチェーン150を使用するために、異なる投票の選択肢を表すために使用されてよい。Txp’がブロック151へとマイニングされる前に、Txp内のAliceにより表された選択肢は、投票意図を示す投票として考えられる。以下の例では、第1トランザクションは、TxSlipと表され、第2の(ターゲット)トランザクションの第1バージョンはTxPollと表され、ターゲットトランザクションの第2バージョンはTxVoteと表される。
Exemplary Use Case 3 - Polls and Voting In another exemplary use case, different alternative terms of a first transaction Tx 1 may be used to represent different voting options, for example as shown in FIG. 5 and using blockchain 150 as a means to record votes. Before Tx p ' is mined into blocks 151, the options represented by Alice in Tx p are considered as votes indicating voting intention. In the following example, the first transaction is denoted as Tx Slip , the first version of the second (target) transaction is denoted as Tx Poll , and the second version of the target transaction is denoted as Tx Vote .

以下の例示的なシナリオを考える。選挙が差し迫っている。行政体(「Bob」103b)は、ブロックチェーンに基づく投票システムを用いて、参加する有権者に報酬を与えることができる世論調査(polling)及び投票(vote)自体に参加を奨励したい。説明を簡単にするために、これは「労働党」と「保守党」の2大政党制であるとする。行政体PGovは、(a)有権者の登録、(b)投票票の発行、及び(c)世論調査及び投票の計数、に責任がある。行政体は、第2パーティ103bであり、このシナリオでは「Bob」とも呼ばれる。選挙民は、N人の有権者を含む。各投票者(「Alice」103a)は、登録するとき、投票者にのみ知られる秘密の「投票トークン(Vote Token)」TVを選択する。Bobの行政体は、各登録した投票者のハッシュ値H(TV)を知っている。 Consider the following example scenario: An election is imminent. A governmental entity ("Bob" 103b) wants to encourage participation in polling and voting itself, using a blockchain-based voting system that can reward voters for participating. For simplicity, assume this is a two-party system with "Labour" and "Conservative" parties. The governmental entity P Gov is responsible for (a) registering voters, (b) issuing ballots, and (c) polling and counting votes. The governmental entity is the second party 103b, also referred to as "Bob" in this scenario. The electorate includes N voters. When each voter ("Alice" 103a) registers, she chooses a secret "Vote Token" T V , known only to the voter. Bob's governmental entity knows the hash value H(T V ) of each registered voter.

以下の定義は、世論調査及び投票システムのために利用されてよい。
・登録(Registration):=投票者は、有権者として登録するために何らかのオフ又はオンブロック処理を使用する。投票者は、非公開でTVを選択し、Bobの行政体にH(TV)を与える。
・投票票(Vote slip)(TxSlip):=投票者が世論調査及び/又は投票に参加する場合に、投票者に支払うロックスクリプトを含むトランザクション。
・世論調査(Poll)(TxPoll):=投票票アウトプットをアンロックするためにアンロック条件(i)又は(ii)を使用する署名付きトランザクション。ここで、(i)及び(ii)は、2つのそれぞれのオプション、例えば一般投票又は政党(以下の例を参照)についての投票選択肢を表す。
・投票(Vote)(TxVote):=投票票アウトプットをアンロックするためにアンロック条件(iii)又は(iv)を使用する署名付きトランザクション。ここで、(iii)及び(iv)は、2つのそれぞれのオプション(ここでも以下の例示的な条件を参照)についての投票選択肢を表す。
The following definitions may be used for polling and voting systems.
Registration:= A voter uses some off- or on-block process to register as a voter. The voter privately selects T V and gives H(T V ) to Bob's government.
Vote slip (Tx Slip ):= A transaction containing a locking script that pays a voter if they take part in a poll and/or vote.
Poll (Tx Poll ):= a signed transaction that uses unlock condition (i) or (ii) to unlock a voting output, where (i) and (ii) represent voting choices for two respective options, e.g. a general vote or a political party (see example below).
Vote (Tx Vote ):= a signed transaction that uses unlock condition (iii) or (iv) to unlock a voting output, where (iii) and (iv) represent voting choices for two respective options (again, see example conditions below).

全ての投票者は、また、彼ら自身の公開鍵PVを有し、彼らの選択した政党に投票(poll又はvote)するために、それぞれ、彼らの選択肢を反映する公開鍵を用いて署名しなければならない。 Every voter also has their own public key PV , and in order to poll or vote for the party of their choice, each must sign with the public key reflecting their choice.

説明のための2大政党制の例では、2つのみの政党のうちの一方が選択されてよく、投票者が彼らの選択を表すために2つの可能な公開鍵があり、以下であってよい:

Figure 0007646570000012
ここで、"..."は、「スカラーによるEC点乗算」のための演算子として定義される。 In the illustrative two-party system example, one of only two parties may be chosen, and there are two possible public keys for voters to express their choice, which may be:
Figure 0007646570000012
where "..." is defined as the operator for "EC point multiplication by a scalar".

アンロック条件に関して、ロックスクリプトは、4つの異なるアンロック条件のうちのいずれか1つを満たすことによりアンロック可能なように、構成される。条件(i)及び(iii)は、両方とも、「労働党」に関連し、それぞれ世論調査及び投票を表す。条件(ii)及び(iv)は、両方とも、「保守党」に関連し、それぞれ世論調査及び投票を表す。条件は、以下のように完全に記述される。

Figure 0007646570000013
実施形態は、以下から切り換えるために、スクリプトレベルの適応性により切り換え条件の概念を使用する。
Figure 0007646570000014
これらの切り換えは、同じ政党について、世論調査を(”→”)投票へ変換することを表す。これらの変換は、適応性を用いて達成できる。何故なら、使用された公開鍵、従って署名は、切り換えに跨がり一貫しているからである。インプットスクリプトデータの残りの部分のみが、適応され(malleated)、従って、投票者の署名は変更される必要がない。 With regard to the unlock conditions, the lock script is configured to be unlockable by satisfying any one of four different unlock conditions: Conditions (i) and (iii) are both related to the "Labour Party" and represent a poll and a vote respectively; Conditions (ii) and (iv) are both related to the "Conservative Party" and represent a poll and a vote respectively. The conditions are fully written as follows:
Figure 0007646570000013
The embodiment uses the concept of switch conditions with script level adaptability to switch from:
Figure 0007646570000014
These switches represent the transformation of polls into ("→") votes for the same party. These transformations can be achieved with malleability because the public keys used, and therefore the signatures, are consistent across switches. Only the remaining parts of the Input Script data are malleated, and therefore the voter's signature does not need to be changed.

しかしながら、有権者が条件を以下から切り換えたい場合:

Figure 0007646570000015
実施形態では、これは、適応性及び切り換え条件を用いて行うことができない。代替として、しかしながら、これは、代わりに、それぞれ世論調査又は投票トランザクションのシーケンス番号を増加させることにより、達成できる。ここで、Alice(投票者)により署名されたメッセージがシーケンス番号を含む。これは、Aliceの世論調査選択についてのAliceの署名が、彼女の後の投票選択を偽造する目的でAliceの署名を再生するために悪意ある第三者により使用できないことを意味する。 However, if a voter wants to switch the condition from:
Figure 0007646570000015
In an embodiment, this cannot be done using the adaptivity and switching conditions. Alternatively, however, this can be achieved by instead incrementing the sequence number of the poll or vote transaction, respectively, where the message signed by Alice (the voter) includes the sequence number. This means that Alice's signature on her poll choice cannot be used by a malicious third party to regenerate Alice's signature in order to forge her later vote choices.

アンロック条件は、特定のロックスクリプトをアンロックするために使用される。それにより、各アンロック条件は、ロックスクリプト内の別個のロック条件を満たす。問題のロックスクリプトは、ここでは「投票スクリプト(Vote script)」と呼ばれ、以下に示される。

Figure 0007646570000016
The unlock conditions are used to unlock a particular lock script, whereby each unlock condition satisfies a separate lock condition within the lock script. The lock script in question is referred to herein as the "Vote script" and is shown below.
Figure 0007646570000016

世論調査及び投票手順は図10に示される。これは、tにおける選挙の公示からtにおける投票期間の終了までの完全な世論調査及び投票処理を示すシーケンス図である。 The polling and voting procedure is shown in Figure 10. This is a sequence diagram showing the complete polling and voting process from the announcement of the election at t0 to the end of the voting period at t3 .

この手順は、以下のステップに分けられる。 This procedure can be divided into the following steps:

ステップ1:Bobの行政体PGovは、後の時間tにおいて行われる投票のために、時間tで投票者登録を開始する。投票者は、投票処理の部分として彼らのハッシングされたトークンH(TV)を自由に登録し与える。 Step 1: Bob's government, P Government , begins voter registration at time t for a vote to take place at a later time t. Voters are free to register and provide their hashed token H(T V ) as part of the voting process.

ステップ2:Bobの行政体PGovは、N個の投票票トランザクションTxPollを発行する。各票支払い、個々の有権者は、ロックスクリプト[投票スクリプト]により、前述のように、該投票者の公開鍵PVに調整される。各トランザクションは、後の時間tにタイムロックされる。 Step 2: Bob's government P Gov issues N voting transactions Tx Poll . Each vote payment, an individual voter's, is coordinated with the voter's public key P V , as described above, by a lock script [vote script]. Each transaction is time-locked to a later time t2 .

ステップ3:投票者Aliceは、公開鍵PVを有し、世論調査フェーズに参加したいと望む。世論調査フェーズは、全ての時間t:t<t<tとして定義される。投票者は、彼女の選択「労働党」を行い、及びアンロックスクリプト条件(i)を用いて世論調査トランザクションTxPoll(図11)を構成することにより、世論調査に参加する。 Step 3: Voter Alice has a public key P V and wishes to participate in the poll phase. The poll phase is defined as all time t: t 0 < t < t 2. The voter participates in the poll by making her selection “Labor” and constructing a poll transaction Tx Poll (FIG. 11) with the unlock script condition (i).

このトランザクションは、投票者、行政、又は第三者により公開できるが、tまでマイニングできない。 This transaction can be published by a voter, the government, or a third party, but cannot be mined until t2 .

投票者が彼女の世論調査選択を「保守党」に変更したい場合、彼女は代わりにスクリプト条件(ii)を用いて、新しい世論調査トランザクションを生成し、シーケンス番号を増加させなければならない。 If a voter wants to change her poll choice to "Conservative", she must instead use script condition (ii) to generate a new poll transaction and increment the sequence number.

ステップ4:投票者Aliceは、何らかの時間tで、彼女が彼女の「労働党」の世論調査選択肢を投票選択肢に変換したいと決定する。これは、世論調査トランザクションのアンロックスクリプトを適応して、投票トランザクションを生成することを含む。適応は、アンロック条件をスクリプト条件(iii)[(i)→(iii)]に変更する。 Step 4: Voter Alice, at some time t1 , decides that she wants to convert her "Labour" poll option into a vote option. This involves adapting the unlock script of the poll transaction to generate a vote transaction. The adaptation changes the unlock condition to script condition (iii) [(i) → (iii)].

適応を実行するために、ステップ4で、投票者Aliceは、彼女の投票トークンTVをBobの行政体へ送信する。ステップ5で、Bobの行政体は、世論調査トークンを投票トークンへ切り換えて、世論調査トランザクションを投票トランザクションに変え、Sig(PGov,TxVote)により投票トランザクションに署名して、それが有効な投票であることを確認する。変形として、投票者は、投票トークンをトランザクションに入れ、それを署名するために行政へと送信し得る。 To perform the adaptation, in step 4, voter Alice sends her voting token T V to Bob's government. In step 5, Bob's government turns the poll token into a voting token, turning the poll transaction into a voting transaction, and signs the voting transaction with Sig(P Gov , Tx Vote ) to ensure that it is a valid vote. As a variant, the voter could put the voting token into a transaction and send it to the government to be signed.

世論調査トランザクション及び後に生成される対応する投票トランザクションの両方は、両方のトランザクションに配置されたロックタイムtのために、全ての時間t<tにおいて無効である。 Both the poll transaction and the corresponding vote transaction generated later are invalid for all times t< t2 due to the lock time t2 placed on both transactions.

ステップ6:Bobの行政体は、tで、全部の有効な投票トランザクションをブロードキャストする。Bobの行政体は、時間t:t<t<t、で確定する任意の他の投票トランザクションをブロードキャストし続ける。ここで、tは投票期間の開始を定義し、tは投票期間の終了を定義する。 Step 6: Bob's government broadcasts all valid voting transactions at t2 . Bob's government continues to broadcast any other voting transactions that are finalized at time t: t2 < t < t3 , where t2 defines the start of the voting period and t3 defines the end of the voting period.

実施形態では、行政体は世論調査トランザクションをブロードキャストしない。これをブロードキャストし報酬を請求することは、調査の対象になる人(Alice)に委ねられる。 In an embodiment, the government entity does not broadcast the poll transaction. It is up to the person being polled (Alice) to broadcast it and claim the reward.

Txslipは、Txpoll/Txvote内で使用されるUTXOが実際に存在するように、処理の中の何らかの時点でマイニングされる必要もあることに留意する。簡単のために、このステップは図10に示されない。トランザクションを時間制限(lock-time)するために使用される実際の方法は、Txslipがネットワーク106へ送信される図10のシグナリング図の中のどの時点でも僅かに影響する。各Txslipに「nLocktime」(定義8)を入れる場合、Txslipも、図の段階6(及び/又は最終的な任意的段階)でマイニングされるためにブロードキャストされる必要がある。代わりに、Txslipのロックスクリプト内にOP_CLTV又はOP_CSV(定義10及び11)を入れることを選択した場合、Txslipは、上述のステップ2と同じ時間にマイニングできる。 Note that the Tx slip also needs to be mined at some point in the process so that there are actually UTXOs to be used in the Tx poll /Tx vote . For simplicity, this step is not shown in FIG. 10. The actual method used to lock-time the transaction slightly impacts at what point in the signaling diagram of FIG. 10 the Tx slip is sent to the network 106. If you put "nLocktime" (definition 8) in each Tx slip , the Tx slip also needs to be broadcast to be mined in step 6 (and/or the final optional step) of the diagram. If you instead choose to put OP_CLTV or OP_CSV (definitions 10 and 11) in the lock script of the Tx slip , the Tx slip can be mined at the same time as step 2 above.

図11は、処理を実装するために使用できる幾つかの例示的なトランザクションを示す。上段のトランザクションTxslipは、選挙民の構成員に世論調査及び/又は投票を行うことにより資金を請求することを可能にする投票票トランザクションである。アウトプットは、投票期間がtで開始した後にのみ請求できる。中段のトランザクションは、投票者が世論調査の部分としての選択肢を選択したことを意味する世論調査トランザクションTxPollである。ロックタイムがOP_CSV又はOP_CLTVを用いて実装され、Txslipが投票者へ送信されたのと同じ時間にネットワークへ送信された(ステップ2)例を仮定すると、このトランザクションは、自身のインプットの中で参照するTxslipのアウトプットに設定されたタイムロックにより、tまで無効である。下段のトランザクションは、投票者が投票の部分としての選択肢を選択したことを意味する投票トランザクションTxvoteである。このトランザクションは、TxPollと同じであるが、スクリプトレベルの適応性を用いてアンロック条件を切り換えられている。このトランザクションは、同様に、tまで無効である。 FIG. 11 shows some example transactions that can be used to implement the process. The transaction at the top, Tx slip , is a ballot transaction that allows members of an electorate to claim funds by polling and/or casting a vote. Outputs can only be claimed after the voting period begins at t2 . The transaction in the middle is a poll transaction, Tx Poll , which means that the voter has selected an option as part of the poll. Assuming an example where lock times are implemented using OP_CSV or OP_CLTV and the Tx slip is sent to the network at the same time as it is sent to the voter (step 2), this transaction is invalid until t2 due to the time lock placed on the output of the Tx slip that it references in its input. The transaction at the bottom is a vote transaction, Tx vote, which means that the voter has selected an option as part of the vote. This transaction is the same as Tx Poll , but with the unlock condition switched using script-level adaptability. This transaction is also invalid until t2 .

実施形態では、タイムロックは、第1トランザクションのアウトプットの部分として含まれる(TxSlip)。代替的なメカニズムでは、しかしながら、ほぼ同じ効果を得るために、TxSlipではなく、TxPollをタイムロックする。 In an embodiment, the timelock is included as part of the output of the first transaction (Tx Slip ). An alternative mechanism, however, is to timelock the Tx Poll rather than the Tx Slip to achieve roughly the same effect.

<結論>
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
Conclusion
It will be understood that the above-described embodiments have been described by way of example only.

更に一般的には、本願明細書に開示される一態様によると、第1パーティと第2パーティとの間のターゲットトランザクションをブロックチェーンに記録する方法であって、前記方法は、前記第1パーティ及び前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
More generally, according to one aspect disclosed herein, there is provided a method for recording a target transaction between a first party and a second party on a blockchain, the method comprising:
obtaining a second updated version of the target transaction, the second updated version being updated relative to an existing first version of the target transaction;
sending the updated version of the target transaction in place of the first version to be propagated through a network of nodes and recorded in a copy of a blockchain maintained at each of at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script specifying a plurality of alternative conditions for unlocking the first output of the first transaction;
A method is provided in which the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script of the updated version is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

実施形態では、当該方法は、前記第2パーティのコンピュータ機器により、前記ネットワークを通じて伝播され前記第1条件を満たすことに基づき前記ブロックチェーンに記録されるよう、前記第2パーティが前記ターゲットトランザクションの前記第1バージョンを送信できるようにする機能を提供するステップ、を含んでよい。 In an embodiment, the method may include providing functionality by a computing device of the second party to enable the second party to transmit the first version of the target transaction to be propagated through the network and recorded on the blockchain based on satisfaction of the first condition.

機能は、前記第2パーティが、前記ネットワークを通じて伝播され前記第1又は第2条件をそれぞれ満たすことに基づきブロックチェーンに記録されるよう、前記ターゲットトランザクションの前記第1又は更新バージョンを選択的に送信することを可能にしてよく、当該方法は、前記第2パーティが前記機能を用いて、前記第1バージョンの代わりに、前記更新バージョンをブロックチェーンに記録されるよう前記の送信を実行するステップを含む。 The functionality may enable the second party to selectively transmit the first or updated version of the target transaction to be propagated through the network and recorded on the blockchain based on satisfaction of the first or second condition, respectively, and the method includes the second party using the functionality to perform the transmission such that the updated version is recorded on the blockchain instead of the first version.

実施形態では、前記機能は、前記第2パーティに、前記第1バージョンの送信を実行することを手動で選択するためのオプションを提供してよく、及び/又は、
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第1バージョンの送信を自動的にトリガするよう構成されてよい。
In embodiments, the functionality may provide the second party with an option to manually select to perform the transmission of the first version; and/or
The facility may be configured to automatically trigger transmission of the first version of the target transaction after the expiration of a predefined time or upon a predefined event.

実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得すること、及び伝播され前記ブロックチェーンに記録されるよう該更新バージョンを送信することは、前記第2パーティのコンピュータ機器により実行されてよい。 In an embodiment, obtaining the updated version of the target transaction and transmitting the updated version to be propagated and recorded on the blockchain may be performed by a computing device of the second party.

実施形態では、前記第2バージョンを取得するステップは、前記第2パーティが第1パーティから前記第2バージョンの少なくとも部分を受信するステップを含んでよい。 In an embodiment, obtaining the second version may include the second party receiving at least a portion of the second version from the first party.

実施形態では、前記方法は、前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの前記第1バージョンを取得するステップであって、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第2パーティが、前記第1条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットを自動的にアンロックできるように構成されてよい、ステップ、を含んでよい。
In an embodiment, the method further comprises, by the second party computing device:
The step of obtaining the first version of the target transaction, wherein the unlock script of the first version of the target transaction may be configured to enable the second party to automatically unlock the first output of the first transaction based on satisfaction of the first condition.

実施形態では、前記ターゲットトランザクションの前記第2バージョンは、前記第1バージョンの後に取得されてよい。 In an embodiment, the second version of the target transaction may be obtained after the first version.

実施形態では、前記第1バージョンを取得するステップは、前記第2パーティが第1パーティから前記第1バージョンの少なくとも部分を受信するステップを含んでよい。 In an embodiment, obtaining the first version may include the second party receiving at least a portion of the first version from the first party.

実施形態では、前記第1バージョンを取得するステップは、前記第2パーティが前記第1トランザクションを生成するステップを含んでよい。 In an embodiment, obtaining the first version may include the second party generating the first transaction.

実施形態では、前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第1パーティの暗号署名を含むことを要求してよい。この場合、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの署名を取得するステップを含み、伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、アンロックスクリプト内に前記第1パーティの署名を含む。 In an embodiment, the second condition may require that the unlock script include a cryptographic signature of the first party that signs portions of the target transaction other than the unlock script. In this case, obtaining the updated version of the target transaction includes obtaining a signature of the first party, and the updated version that is propagated and sent to be recorded on the blockchain includes the signature of the first party in the unlock script.

実施形態では、前記第1条件は、前記第1パーティの暗号書名を要求しなくてよい。 In an embodiment, the first condition may not require a cryptographic signature of the first party.

実施形態では、少なくとも前記第1条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。 In an embodiment, at least the first condition may require that the unlock script include a cryptographic signature of the second party that signs portions of the target transaction other than the unlock script.

実施形態では、前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。この場合、伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、前記アンロックスクリプト内に前記第2パーティの暗号署名を含む。 In an embodiment, the second condition may require that the unlock script include a cryptographic signature of the second party that signs portions of the target transaction other than the unlock script. In this case, the updated version that is propagated and sent to be recorded on the blockchain includes the cryptographic signature of the second party in the unlock script.

実施形態では、前記更新バージョンを取得するステップは、前記第2パーティが、前記第1バージョンを前記第1パーティへ送信して、前記第1パーティが前記第1パーティの署名を追加することにより前記更新バージョンへと適応する、ステップを含んでよい。前記第1及び第2条件は、前記第2パーティの同じ署名が前記ターゲットトランザクションの同じ部分に署名することを要求してよく、従って、前記第2パーティは前記更新バージョンに再び署名する必要がない。 In an embodiment, obtaining the updated version may include the second party sending the first version to the first party, which adapts the updated version by adding a signature of the first party. The first and second conditions may require that the same signature of the second party signs the same portion of the target transaction, so that the second party does not need to sign the updated version again.

実施形態では、前記第1条件は、データペイロードがアンロックスクリプトに含まれることを要求してよいが、前記第2条件は、前記データペイロードが前記ターゲットトランザクションに含まれることを要求しなくてよい。この場合、ネットワークを介して伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、前記データペイロードを含む必要がない。 In an embodiment, the first condition may require that a data payload be included in the unlock script, but the second condition may not require that the data payload be included in the target transaction. In this case, the updated version that is propagated through the network and sent to be recorded on the blockchain does not need to include the data payload.

実施形態では、前記第1条件は、前記アンロックスクリプトが前記データペイロード及び前記アンロックスクリプトを除く前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよいが、前記第1パーティの暗号書名がターゲットトランザクションに含まれることを要求せず、前記第2条件は、前記アンロックスクリプトが前記第1パーティ及び前記第2パーティの両方の暗号署名を含むことを要求してよいが、前記データペイロードが前記ターゲットトランザクションに含まれることを要求しなくてよい。このような実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの署名を取得するステップを含み、伝播されブロックチェーンに記録されるよう送信される前記ターゲットトランザクションの前記更新バージョンは、前記データペイロードを含む必要がないが、前記アンロックスクリプト内に前記第1パーティ及び第2パーティの署名を含む。 In embodiments, the first condition may require that the unlock script include a cryptographic signature of the second party that signs portions of the target transaction other than the data payload and the unlock script, but does not require that the cryptographic signature of the first party be included in the target transaction, and the second condition may require that the unlock script include cryptographic signatures of both the first and second parties, but does not require that the data payload be included in the target transaction. In such embodiments, obtaining the updated version of the target transaction includes obtaining a signature of the first party, and the updated version of the target transaction that is propagated and sent to be recorded on a blockchain does not need to include the data payload, but does include the signatures of the first and second parties in the unlock script.

実施形態では、前記要件は、前記それぞれのデータ部分が前記ロックスクリプトに含まれるハッシュチャレンジにより生成されることを含み、前記ハッシュチャレンジは、前記それぞれのデータ部分のハッシュと、前記アンロックスクリプト内の前記それぞれのデータ部分のハッシュが前記ロックスクリプトに含まれるハッシュと一致することをチェックするためのハッシュ関数と、を含む。前記方法は、前記ネットワークと別に、前記第1トランザクションのインスタンスを受信する前に、ハッシュセット(例えば、ハッシュツリー)を前記第1パーティに利用可能にするステップを含んでよく、前記ハッシュセットは、第2第1パーティが前記それぞれのデータ部分の前記ハッシュチャレンジを生成できるようにするために、前記データ部分の各々のハッシュ値を含む。 In an embodiment, the requirement includes that the respective data portions are generated by a hash challenge included in the lock script, the hash challenge including a hash of the respective data portion and a hash function for checking that the hash of the respective data portion in the unlock script matches the hash included in the lock script. The method may include making available to the first party, separate from the network, a hash set (e.g., a hash tree) prior to receiving the first transaction instance, the hash set including hash values of each of the data portions to enable a second first party to generate the hash challenge for the respective data portion.

実施形態では、前記第1トランザクションの前記第1アウトプットは、前記第1条件又は前記第2条件に従い前記第1アウトプットをアンロックすることにより償還される、前記第2パーティへの支払いを指定してよく、
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第2パーティへ移転するアウトプットを含んでよい。
In embodiments, the first output of the first transaction may specify a payment to the second party to be redeemed by unlocking the first output according to the first terms or the second terms;
The target transaction may include an output that transfers at least a portion of the payment to the second party.

実施形態では、前記方法は、前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大し、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の前記最終部分に続き、前記第1パーティから前記更新バージョンを受信するステップを含む。
In an embodiment, the method includes, by the computing device of the second party:
streaming a sequence of data portions to the first party, terminating with a final portion in the sequence;
receiving a respective instance of the first transaction from the first party in response to a respective one of the data portions, a first output of each instance specifying a payment to the second party for the respective portion;
said payment increasing with each data portion;
Obtaining the updated version of the target transaction follows the final portion in the sequence and includes receiving the updated version from the first party.

実施形態では、前記増大は、それまでに送信されたデータ部分の数に線形に比例してよい。 In an embodiment, the increase may be linearly proportional to the number of data portions transmitted so far.

実施形態では、各データ部分は、メディアコンテンツ(例えば、オーディオ及び/又はビデオコンテンツ)のアイテムの異なる部分であってよい。 In an embodiment, each data portion may be a different portion of an item of media content (e.g., audio and/or video content).

代替として、各データ部分は、サービスのユニット(例えば、ガス、水道、電気を含む生活必需サービスの供給、又は車両、不動産、又は他の物理的アイテムのレンタル)にアクセスするための異なる鍵であってよい。 Alternatively, each data portion may be a different key for accessing a unit of service (e.g., the supply of essential services including gas, water, and electricity, or the rental of a vehicle, property, or other physical item).

実施形態では、前記関数は、前記第1パーティからそれまでに受信したシーケンスの中の前記第1トランザクションの最新のインスタンスを償還するために、シーケンスの中の任意の時点で、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記ターゲットトランザクションの前記第1バージョンの送信を実行することを手動で選択するオプションを、前記第2パーティに提供してよい。代替又は追加として、前記関数は、前記第1パーティが前記第1トランザクションのインスタンスを送信するのをシーケンスの途中で止めた場合に、前記第1トランザクションの最新のインスタンスを償還するために、ネットワークを通じて伝播されブロックチェーンに記録されるよう前記第1バージョンの送信を自動的に実行するよう構成されてよい。 In an embodiment, the function may provide the second party with an option to manually select, at any point in the sequence, to perform a transmission of the first version of the target transaction to be propagated through the network and recorded in the blockchain to redeem the latest instance of the first transaction in the sequence received so far from the first party. Alternatively or additionally, the function may be configured to automatically perform a transmission of the first version to be propagated through the network and recorded in the blockchain to redeem the latest instance of the first transaction if the first party stops transmitting instances of the first transaction midway through the sequence.

実施形態では、前記第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含んでよく、前記第1トランザクションの前記第1アウトプットは第1支払いを指定してよく、前記第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを更に含んでよい。その結果、支払いの合計は前記インプット額より高く、前記第1パーティから前記第2パーティにより受信される前記第1トランザクションは、差分を生成する他のインプットを有しない。ネットワークのノードは、前記第1トランザクションが合計インプット額より多くの合計支払いを指定する場合、前記第1トランザクションを無効であるとして拒否するよう構成されてよい。このような実施形態では、当該方法は、前記差分を構成する(make up)ために、前記第2パーティが第2インプットを前記第1トランザクションの最終又は最近のインスタンスに追加するステップと、追加された前記第2インプットを有する前記第1トランザクションを、ネットワークを通じて伝播されブロックチェーンに記録されるよう送信するステップと、を含んでよい。 In an embodiment, the first transaction may include one or more first inputs specifying an input amount, the first output of the first transaction may specify a first payment, and the first transaction may further include one or more further outputs specifying one or more further payments. As a result, a total payment is higher than the input amount, and the first transaction received by the second party from the first party has no other inputs that generate a difference. Nodes of a network may be configured to reject the first transaction as invalid if the first transaction specifies a total payment that is greater than the total input amount. In such an embodiment, the method may include the second party adding a second input to a last or most recent instance of the first transaction to make up the difference, and sending the first transaction with the added second input to be propagated through a network and recorded in a blockchain.

実施形態では、更なるアウトプットは、前記インプット額から前記第1支払いを差し引いたものに等しい、前記第1パーティへの第2支払いを指定する第2アウトプットと、前記第2支払いに等しい、前記第2パーティへの第3支払いを指定する第3アウトプットと、を含んでよい。 In an embodiment, further outputs may include a second output specifying a second payment to the first party equal to the input amount minus the first payment, and a third output specifying a third payment to the second party equal to the second payment.

実施形態では、前記ロックスクリプトは、前記代替条件のうちの第3条件を含み、これは、ロックタイムが終了すること、及び前記第1パーティの暗号署名が前記アンロックスクリプトに含まれることを要求し、従って、前記第2パーティにより前記ロックタイムの範囲内で償還されなかった場合、前記第1パーティが、前記第1トランザクションの前記第1アウトプットの中の支払いを償還することを可能にする。 In an embodiment, the lock script includes a third one of the alternative conditions, which requires that a lock time expires and that a cryptographic signature of the first party be included in the unlock script, thus allowing the first party to redeem a payment in the first output of the first transaction if not redeemed within the lock time by the second party.

実施形態では、前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応してよく、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。
In embodiments, each of at least some of the alternative conditions may correspond to a different option for voting;
The method may include, prior to obtaining the updated version of the target transaction, marking the unlock script in the first version as accessible or accessible by a third party as a non-binding indication of voting intent.

実施形態では、ロックタイムは所定の時点の後になるまで前記ネットワークが前記ブロックチェーンに前記第1バージョンを記録するのを防ぐために、前記第1トランザクション及び前記ターゲットトランザクションの前記第1バージョンのうちの少なくとも1つに含まれてよい。 In an embodiment, a lock time may be included in at least one of the first transaction and the first version of the target transaction to prevent the network from recording the first version to the blockchain until after a predetermined point in time.

実施形態では、前記第1トランザクションの前記アウトプットは、前記ロックスクリプト内で指定された前記条件のうちのいずれか1つに従い前記第1アウトプットをアンロックすることにより償還される支払いを指定し、前記ターゲットトランザクションは、前記支払いのうちの少なくとも一部を前記第1パーティへ移転するアウトプットを含んでよい。 In an embodiment, the output of the first transaction may specify a payment to be redeemed by unlocking the first output according to any one of the conditions specified in the locking script, and the target transaction may include an output that transfers at least a portion of the payment to the first party.

実施形態では、前記代替条件は、前記第1選択肢の世論調査指示に対応する第1条件、前記第2選択肢の世論調査指示に対応する第2条件、前記第1選択肢の投票選択に対応する第3条件、及び前記第2選択肢の投票選択に対応する第4条件、を含んでよく、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第1又は前記第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されてよく、前記ターゲットトランザクションの前記第2バージョンの前記アンロックスクリプトは、前記第1条件の代わりに前記第3条件を又は前記第2条件の代わりに前記第4条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されることにより、前記世論調査指示を投票へと変換するよう構成されてよい。 In an embodiment, the alternative conditions may include a first condition corresponding to a poll instruction for the first option, a second condition corresponding to a poll instruction for the second option, a third condition corresponding to a vote selection for the first option, and a fourth condition corresponding to a vote selection for the second option, the unlock script of the first version of the target transaction may be configured to unlock the first output of the first transaction based on satisfying the first or second condition, and the unlock script of the second version of the target transaction may be configured to convert the poll instruction into a vote by being configured to unlock the first output of the first transaction based on satisfying the third condition instead of the first condition or the fourth condition instead of the second condition.

投票の場合には、前記第1条件は、前記ターゲットトランザクションの前記アンロックスクリプトが、前記ロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。前記第1条件は、前記第1パーティの前記署名が個人の投票トークンに署名することを要求してよい。前記第2条件は、前記ターゲットトランザクションの前記アンロックスクリプトが、前記第1パーティの前記署名と前記第2パーティの暗号署名とを含み、それぞれが前記ロックスクリプトを除く前記ターゲットトランザクションの部分に署名することを要求してよい。 In the case of voting, the first condition may require that the unlock script of the target transaction includes a cryptographic signature of the second party that signs a portion of the target transaction other than the lock script. The first condition may require that the signature of the first party signs an individual voting token. The second condition may require that the unlock script of the target transaction includes the signature of the first party and a cryptographic signature of the second party, each signing a portion of the target transaction other than the lock script.

本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され、第1パーティ及び/又は第2パーティのコンピュータ機器上で実行すると本願明細書に開示されたいずれかの実施形態の方法を実行するよう構成される、コンピュータプログラムが提供される。 According to another aspect disclosed herein, there is provided a computer program embodied on a computer readable storage device and configured to execute the method of any of the embodiments disclosed herein when executed on a first party and/or second party computing device.

別の態様によると、第1パーティ及び/又は第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは本願明細書に開示されたに任意の実施形態の方法を実行するよう構成される、コンピュータ機器が提供される。
According to another aspect, a first party and/or second party computing device includes:
a memory including one or more memory units;
a processing device including one or more processing units;
Including,
A computing device is provided, wherein the memory stores code configured to run on the processing device, the code configured to perform a method according to any embodiment disclosed herein.

本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され第2パーティのコンピュータで実行されると動作を実行するよう構成されるコンピュータプログラムであって、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
According to another aspect disclosed herein, there is provided a computer program embodied on a computer readable storage device and configured to perform operations when executed on a second party computer, the operations including:
obtaining a first version of the target transaction;
obtaining a second version of the target transaction;
causing the second party to selectively transmit either the first or second version to be propagated through a network of nodes and recorded in a copy of a blockchain maintained at each of at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script that specifies an amount of the first party's digital asset and specifies a number of alternative conditions for unlocking the first output of the first transaction;
A computer program product is provided, wherein the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され第2パーティのコンピュータ機器で実行されると動作を実行するよう構成されるコンピュータプログラムであって、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンのいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
According to another aspect disclosed herein, there is provided a computer program embodied on a computer readable storage device and configured to perform operations when executed on a second party computing device, the operations including:
obtaining a first version of the target transaction;
obtaining a second version of the target transaction;
causing the second party to selectively transmit either the first or second version to be propagated through a network of nodes and recorded in a copy of a blockchain maintained at at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script that specifies an amount of a first party's digital asset and specifies a number of alternative conditions for unlocking the first output of the first transaction;
A computer program product is provided, wherein the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

本願明細書に開示される別の態様によると、第2パーティのコンピュータ機器であって、1つ以上のメモリユニットを含むメモリと、1つ以上の処理ユニットを含む処理機器と、を含み、前記メモリは前記処理機器上で実行するよう構成されるコードを格納し、前記コードは、前記処理機器上で動作を実行するよう構成され、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2のバージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータ機器が提供される。
According to another aspect disclosed herein, a second party computing device includes a memory including one or more memory units; and a processing device including one or more processing units, the memory storing code configured to execute on the processing device, the code configured to execute operations on the processing device, the operations including:
obtaining a first version of the target transaction;
obtaining a second version of the target transaction;
causing the second party to selectively transmit either the first or second version to be propagated through a network of nodes and recorded in a copy of a blockchain maintained at at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script that specifies an amount of a first party's digital asset and that specifies a number of alternative conditions for unlocking the first output of the first transaction;
A computing device is provided, wherein the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

本願明細書に開示される別態様によると、第2パーティにブロックチェーンにターゲットトランザクションを記録させる方法であって、前記方法は、第1パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの更新バージョンを送信するステップと、
前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップであって、それにより、前記第2パーティが、ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記更新バージョンを送信させる、ステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
According to another aspect disclosed herein, there is provided a method for causing a second party to record a target transaction on a blockchain, the method comprising:
sending an updated version of the target transaction, the updated version being updated relative to an existing first version of the target transaction;
sending the updated version of the target transaction in place of the first version, thereby causing the second party to send the updated version to be propagated through a network of nodes and recorded in copies of a blockchain maintained at at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script specifying a plurality of alternative conditions for unlocking the first output of the first transaction;
A method is provided in which the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.

本願明細書に開示された別の態様によると、ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、コンピュータ可読データ媒体上に具現化され、
第1トランザクションのアウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含むアウトプットを有する第1トランザクションと、
アンロックスクリプトを含むインプット及び前記第1トランザクションのアウトプットへのポインタを有する第2トランザクションの第1バージョンと、
を含み、前記ターゲットトランザクションのz年期第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成され、
前記第2トランザクションの第2バージョンは、アンロックスクリプトを含むインプット、及び前記第1トランザクションの前記アウトプットへのポインタを含み、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成される、トランザクションのセットが提供される。
According to another aspect disclosed herein, a set of transactions for recording in a blockchain, the set embodied on a computer-readable data medium, comprising:
a first transaction having an output including a lock script that specifies a number of alternative conditions for unlocking the output of the first transaction;
a first version of a second transaction having an input including an unlock script and a pointer to an output of the first transaction;
wherein the unlock script of the zth year first version of the target transaction is configured to unlock the output of the first transaction based on satisfying a first one of the alternative conditions;
A set of transactions is provided, wherein a second version of the second transaction includes an input that includes an unlock script and a pointer to the output of the first transaction, the unlock script being configured to unlock the output of the first transaction based on satisfying a second one of the alternative conditions instead of the first condition.

開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。 Other variations or uses of the disclosed technology may become apparent to those of ordinary skill in the art upon review of this disclosure. The scope of the disclosure is not limited by the described embodiments, but only by the scope of the appended claims.

Claims (35)

第1パーティと第2パーティとの間のターゲットトランザクションをブロックチェーンに送信する方法であって、前記方法は、前記第1パーティ及び前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
ノードのネットワークを通じて伝播されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップであって、それにより、前記ターゲットトランザクションを、前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録させる、ステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法。
1. A method for transmitting a target transaction between a first party and a second party to a blockchain, the method comprising:
obtaining a second updated version of the target transaction, the second updated version being updated relative to an existing first version of the target transaction;
sending the updated version of the target transaction in place of the first version to be propagated through a network of nodes, thereby causing the target transaction to be recorded in copies of a blockchain maintained at each of at least some of the nodes;
Including,
the target transaction includes an input including an unlock script and a pointer to a first output of a first transaction, the first output including a lock script specifying a plurality of alternative conditions for unlocking the first output of the first transaction;
the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying a first condition of the alternative conditions, and the unlock script of the updated version is configured to unlock the first output of the first transaction based on satisfying a second condition of the alternative conditions instead of the first condition.
前記第2パーティのコンピュータ機器により、前記ネットワークを通じて伝播され前記第1条件を満たすことに基づき前記ブロックチェーンに記録されるよう、前記第2パーティが前記ターゲットトランザクションの前記第1バージョンを送信できるようにする機能を提供するステップ、を含む請求項1に記載の方法。 The method of claim 1, further comprising: providing functionality by a computing device of the second party that enables the second party to transmit the first version of the target transaction to be propagated through the network and recorded on the blockchain based on the first condition being satisfied. 前記機能は、前記第2パーティに、前記第1バージョンの送信を実行することを手動で選択するためのオプションを提供し、及び/又は、
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第1バージョンの送信を自動的にトリガするよう構成される、
請求項2に記載の方法。
the functionality providing the second party with an option to manually select to perform the transmission of the first version; and/or
the facility is configured to automatically trigger transmission of the first version of the target transaction after the expiration of a predefined time or upon a predefined event;
The method of claim 2.
前記ターゲットトランザクションの前記更新バージョンを取得すること、及び伝播され前記ブロックチェーンに記録されるよう該更新バージョンを送信することは、前記第2パーティのコンピュータ機器により実行される、請求項1~3のいずれかに記載の方法。 A method according to any one of claims 1 to 3, wherein obtaining the updated version of the target transaction and sending the updated version to be propagated and recorded in the blockchain are performed by a computing device of the second party. 前記第2の更新バージョンを取得するステップは、第1パーティから前記第2の更新バージョンの少なくとも部分を受信するステップを含む、請求項4に記載の方法。 The method of claim 4, wherein obtaining the second update version includes receiving at least a portion of the second update version from a first party. 前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの前記第1バージョンを取得するステップであって、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第2パーティが、前記第1条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットを自動的にアンロックできるように構成される、ステップ、を含む請求項1~5のいずれかに記載の方法。
by said second party's computing device;
6. The method of claim 1, further comprising: obtaining the first version of the target transaction, wherein the unlock script of the first version of the target transaction is configured to enable the second party to automatically unlock the first output of the first transaction based on satisfaction of the first condition.
前記ターゲットトランザクションの前記第2の更新バージョンは、前記第1バージョンの後に取得される、請求項6に記載の方法。 The method of claim 6, wherein the second updated version of the target transaction is obtained after the first version. 前記第1バージョンを取得するステップは、前記第1パーティから前記第1バージョンの少なくとも部分を受信するステップを含む、請求項6又は7に記載の方法。 The method of claim 6 or 7, wherein obtaining the first version includes receiving at least a portion of the first version from the first party. 前記第1バージョンを取得するステップは、前記第2パーティが前記第1トランザクションを生成するステップを含む、請求項6、7又は8に記載の方法。 The method of claim 6, 7 or 8, wherein the step of obtaining the first version includes the step of the second party generating the first transaction. 前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第1パーティの暗号署名を含むこと、前記ターゲットトランザクションの前記更新バージョンを取得するステップが前記第1パーティの前記署名を取得することを含むこと、及び伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンが、前記アンロックスクリプト内に前記第1パーティの前記署名を含むこと、を要求する、請求項1~9のいずれかに記載の方法。 The method of any one of claims 1 to 9, wherein the second condition requires that the unlock script includes a cryptographic signature of the first party that signs portions of the target transaction other than the unlock script, that obtaining the updated version of the target transaction includes obtaining the signature of the first party, and that the updated version that is propagated and sent to be recorded on the blockchain includes the signature of the first party in the unlock script. 前記第1条件は、前記第1パーティの暗号署名を要求しない、請求項10に記載の方法。 The method of claim 10, wherein the first condition does not require a cryptographic signature of the first party. 少なくとも前記第1条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求する、請求項10又は11に記載の方法。 The method of claim 10 or 11, wherein at least the first condition requires that the unlock script include a cryptographic signature of the second party that signs parts of the target transaction other than the unlock script. 前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを更に要求し、
伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンは、前記アンロックスクリプト内に前記第2パーティの前記暗号署名を含む、請求項12に記載の方法。
the second condition further requires that the unlock script include a cryptographic signature of the second party that signs portions of the target transaction other than the unlock script;
13. The method of claim 12, wherein the updated version that is propagated and sent to be recorded in the blockchain includes the cryptographic signature of the second party in the unlock script.
前記更新バージョンを取得するステップは、
前記第2パーティが前記第1バージョンを前記第1パーティへ送信するステップであって、前記第1パーティが前記第1パーティの署名を追加することにより、前記更新バージョンに統合できるようにする、ステップを含み、
前記第1条件及び前記第2条件は、前記第2パーティの同じ署名が前記ターゲットトランザクションの同じ部分に署名することを要求し、前記第2パーティが前記更新バージョンに再び署名する必要がない、請求項6に従属する請求項12又は13に記載の方法。
The step of obtaining the updated version includes:
the second party transmitting the first version to the first party, such that the first party can incorporate it into the updated version by adding a signature of the first party;
14. The method of claim 12 or 13 dependent on claim 6, wherein the first condition and the second condition require the same signature of the second party to sign the same part of the target transaction, and wherein the second party does not need to sign the updated version again.
前記第1条件は、データペイロードがアンロックスクリプトに含まれることを要求するが、前記第2条件は、前記データペイロードが前記ターゲットトランザクションに含まれることを要求せず、
前記ネットワークを介して伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンは、前記データペイロードを含まない、請求項1~13のいずれかに記載の方法。
the first condition requires that a data payload be included in an unlock script, but the second condition does not require that the data payload be included in the target transaction;
The method according to any one of claims 1 to 13, wherein the updated version transmitted to be propagated through the network and recorded in the blockchain does not include the data payload.
前記第1条件は、前記アンロックスクリプトが、前記データペイロードと、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名と、を含むことを要求するが、前記第1パーティの暗号署名が前記ターゲットトランザクションに含まれることを要求せず、
前記第2条件は、前記アンロックスクリプトが、前記第1パーティ及び前記第2パーティの両者の暗号署名を含むことを要求するが、前記データペイロードが前記ターゲットトランザクションに含まれることを要求せず、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの前記署名を取得するステップを含み、
伝播され前記ブロックチェーンに記録されるよう送信される前記ターゲットトランザクションの前記更新バージョンは、前記データペイロードを含まないが、前記アンロックスクリプト内の前記第1パーティ及び前記第2パーティの署名を含む、請求項15に記載の方法。
the first condition requires that the unlock script include the data payload and a cryptographic signature of the second party that signs portions of the target transaction other than the unlock script, but does not require that the cryptographic signature of the first party be included in the target transaction;
the second condition requires that the unlock script include a cryptographic signature of both the first party and the second party, but does not require that the data payload be included in the target transaction;
obtaining the updated version of the target transaction includes obtaining the signature of the first party;
16. The method of claim 15, wherein the updated version of the target transaction that is propagated and sent to be recorded in the blockchain does not include the data payload but includes the signatures of the first party and the second party in the unlock script.
前記第1トランザクションの前記第1アウトプットは、前記第1条件又は前記第2条件に従い前記第1アウトプットをアンロックすることにより償還される、前記第2パーティへの支払いを指定し、
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第2パーティへ移転するアウトプットを含む、請求項1~15のいずれかに記載の方法。
the first output of the first transaction specifies a payment to the second party to be redeemed by unlocking the first output according to the first terms or the second terms;
The method of any preceding claim, wherein the target transaction comprises an output that transfers at least a portion of the payment to the second party.
前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含み
前記支払いは各データ部分と共に増大し、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の前記最終部分に続き、前記第1パーティから前記更新バージョンを受信するステップを含む、請求項17に記載の方法。
by said computing device of said second party;
streaming a sequence of data portions to the first party, terminating with a final portion in the sequence;
receiving a respective instance of the first transaction from the first party in response to a respective one of the data portions, a first output of each instance specifying a payment to the second party for the respective portion;
said payment increasing with each data portion;
20. The method of claim 17, wherein obtaining the updated version of the target transaction comprises following the final portion in the sequence and receiving the updated version from the first party.
前記増大は、それまでに送信されたデータ部分の数に線形に比例する、請求項18に記載の方法。 The method of claim 18, wherein the increase is linearly proportional to the number of data portions transmitted so far. 各データ部分は、メディアコンテンツのアイテムの異なる部分である、請求項18又は19に記載の方法。 20. The method of claim 18 or 19, wherein each data portion is a different portion of an item of media content. 各データ部分はサービスのユニットにアクセスするための異なる鍵である、請求項18又は19に記載の方法。 20. The method of claim 18 or 19, wherein each data portion is a different key for accessing a unit of the service. 前記サービスは、
電気、ガス、又は水道を含む生活必需サービスの提供、又は、
不動産、車両、又は別の物理アイテムのレンタル、
のうちの1つを含む、請求項21に記載の方法。
The service is
Providing essential services, including electricity, gas, or water; or
Renting real estate, vehicles, or other physical items;
22. The method of claim 21, comprising one of:
前記機能は、前記第2パーティに、前記シーケンスの中の任意のポイントにおいて、それまでに前記第1パーティから受信した前記シーケンスの中の前記第1トランザクションの最新のインスタンスを償還するために、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記ターゲットトランザクションの前記第1バージョンの送信を実行することを手動で選択するオプションを提供し、及び/又は、
前記機能は、前記第1パーティが前記シーケンスの途中で前記第1トランザクションのインスタンスを送信することを停止した場合に、前記第1トランザクションの最新のインスタンスを償還するために、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記第1バージョンの送信を自動的に実行するよう構成される、請求項2に従属する請求項18~22のいずれか一項に記載の方法。
the functionality provides the second party with the option to manually select, at any point in the sequence, to effect a transmission of the first version of the target transaction to be propagated through the network and recorded on a blockchain in order to redeem the most recent instance of the first transaction in the sequence received from the first party to date; and/or
23. The method of any one of claims 18 to 22 when dependent on claim 2, wherein the facility is configured to automatically perform transmission of the first version to be propagated through the network and recorded in a blockchain in order to redeem a latest instance of the first transaction if the first party stops transmitting instances of the first transaction partway through the sequence.
前記第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含み、前記第1トランザクションの前記第1アウトプットは第1支払いを指定し、前記第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを含み、前記支払いの合計は前記インプット額より大きく、前記第1パーティから前記第2パーティにより受信された前記第1トランザクションは、差を構成する他のインプットを含まず、前記ネットワークのノードは、合計インプット額より大きい合計支払いを指定する場合に、前記第1トランザクションを無効であるとして拒否するよう構成され、
前記方法は、前記第2パーティが、前記差を構成するために前記第1トランザクションの最終的な又は最新のインスタンスに第2インプットを追加し、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう、追加された前記第2インプットを有する前記第1トランザクションを送信するステップ、を含む請求項18~23のいずれかに記載の方法。
the first transaction includes one or more first inputs specifying an input amount, the first output of the first transaction specifies a first payment, the first transaction includes one or more further outputs specifying one or more further payments, a sum of the payments is greater than the input amount, the first transaction received by the second party from the first party does not include other inputs making up a difference, and nodes of the network are configured to reject the first transaction as invalid if it specifies a total payment greater than the total input amount,
24. The method of any of claims 18 to 23, comprising the step of the second party adding a second input to a final or latest instance of the first transaction to account for the difference and transmitting the first transaction with the added second input to be propagated through the network and recorded in a blockchain.
前記更なるアウトプットは、前記インプット額から前記第1支払いを差し引いたものに等しい、前記第1パーティへの第2支払いを指定する第2アウトプットと、前記第2支払いに等しい、前記第2パーティへの第3支払いを指定する第3アウトプットと、を更に含む、請求項24に記載の方法。 25. The method of claim 24, wherein the further outputs further include a second output specifying a second payment to the first party equal to the input amount minus the first payment, and a third output specifying a third payment to the second party equal to the second payment. 前記ロックスクリプトは、前記代替条件のうちの第3条件を含み、これは、ロックタイムが終了すること、及び前記第1パーティの暗号署名が前記アンロックスクリプトに含まれることを要求し、従って、前記第2パーティにより前記ロックタイムの範囲内で償還されなかった場合、前記第1パーティが、前記第1トランザクションの前記第1アウトプットの中の支払いを償還することを可能にする、請求項17~25のいずれかに記載の方法。 A method according to any of claims 17 to 25, wherein the lock script includes a third one of the alternative conditions, which requires that a lock time expires and that a cryptographic signature of the first party is included in the unlock script, thereby allowing the first party to redeem a payment in the first output of the first transaction if not redeemed within the lock time by the second party. 前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応し、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセス又は第3パーティによりアクセス可能であるとマークするステップを含む、請求項1~9のいずれかに記載の方法。
each of at least some of the alternative conditions corresponds to a different option for voting;
10. The method of claim 1, further comprising, prior to obtaining the updated version of the target transaction, marking the unlock script in the first version as accessible or accessible by a third party as a non-binding indication of voting intent.
所定の時点の後になるまで前記ネットワークが前記ブロックチェーンに前記第1バージョンを記録するのを防ぐために、前記第1トランザクション及び前記ターゲットトランザクションの前記第1バージョンのうちの少なくとも1つにロックタイムが含まれる、請求項27に記載の方法。 28. The method of claim 27, wherein at least one of the first transaction and the first version of the target transaction includes a lock time to prevent the network from recording the first version to the blockchain until after a predetermined point in time. 前記第1トランザクションの前記第1アウトプットは、前記ロックスクリプト内で指定された前記代替条件のうちのいずれか1つに従い前記第1アウトプットをアンロックすることにより償還される支払いを指定し、前記ターゲットトランザクションは、前記支払いのうちの少なくとも一部を前記第1パーティへ移転するアウトプットを含む、請求項27又は28に記載の方法。 29. The method of claim 27 or 28, wherein the first output of the first transaction specifies a payment to be redeemed by unlocking the first output according to any one of the alternative conditions specified in the locking script, and the target transaction includes an output that transfers at least a portion of the payment to the first party. 前記代替条件は、
第1選択肢の世論調査指示に対応する第1条件、
第2選択肢の世論調査指示に対応する第2条件、
第1選択肢の投票選択に対応する第3条件、及び、
第2選択肢の投票選択に対応する第4条件、
を含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第1又は前記第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、
前記ターゲットトランザクションの前記第2の更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに前記第3条件を又は前記第2条件の代わりに前記第4条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されることにより、前記世論調査指示を投票へと変換するよう構成される、請求項27~29のいずれかに記載の方法。
The alternative condition is:
a first condition corresponding to the poll instruction of the first option;
a second condition corresponding to the polling instruction for the second option;
a third condition corresponding to the voting selection of the first alternative; and
A fourth condition corresponds to the voting choice of the second option.
Including,
the unlock script of the first version of the target transaction is configured to unlock the first output of the first transaction based on satisfying the first or second condition;
30. The method of any of claims 27 to 29, wherein the unlock script of the second updated version of the target transaction is configured to convert the poll instructions into votes by unlocking the first output of the first transaction based on satisfying the third condition instead of the first condition or the fourth condition instead of the second condition.
第1パーティのコンピュータ機器含むコンピュータシステム上で実行されると前記コンピュータシステムに請求項に記載の方法を実行させるコンピュータプログラム。 A computer program product which, when executed on a computer system including a first party computing device, causes said computer system to carry out the method of claim 1 . 第2パーティのコンピュータ機器を含むコンピュータシステム上で実行されると前記コンピュータシステムに請求項1~30のいずれか一項に記載の方法を実行させるコンピュータプログラム。A computer program which when executed on a computer system including a second party computing device causes said computer system to carry out the method of any one of claims 1 to 30. 第1パーティのコンピュータ機器含むコンピュータシステムであって、前記コンピュータシステムは、前記第1パーティのコンピュータ機器実装され、前記コンピュータシステムは、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリはコードを格納し、前記コードは前記処理機器により実行されると前記処理機器に請求項に記載の方法を実行させるよう構成される、コンピュータシステム
A computer system including a first party computing device, the computer system being implemented on the first party computing device, the computer system comprising:
a memory including one or more memory units;
a processing device including one or more processing units;
Including,
13. A computer system , wherein the memory stores code that, when executed by the processing device, causes the processing device to perform the method of claim 1 .
第2パーティのコンピュータ機器を含むコンピュータシステムであって、前記コンピュータシステムは、前記第2パーティのコンピュータ機器に実装され、前記コンピュータシステムは、A computer system including a second party computing device, the computer system being implemented on the second party computing device, the computer system comprising:
1つ以上のメモリユニットを含むメモリと、a memory including one or more memory units;
1つ以上の処理ユニットを含む処理機器と、a processing device including one or more processing units;
を含み、Including,
前記メモリはコードを格納し、前記コードは前記処理機器により実行されると前記処理機器に請求項1~30のうちの一項に記載の方法を実行させるよう構成される、コンピュータシステム。A computer system, wherein the memory stores code that, when executed by the processing device, causes the processing device to perform a method according to one of claims 1 to 30.
第1パーティのコンピュータ機器及び第2パーティのコンピュータ機器を含むコンピュータシステムであって、前記コンピュータシステムは、前記第1パーティのコンピュータ機器と前記第2パーティのコンピュータ機器との組み合わせの間に分散され、前記コンピュータシステムは、1. A computer system including first party computing equipment and second party computing equipment, the computer system being distributed among a combination of the first party computing equipment and the second party computing equipment, the computer system comprising:
1つ以上のメモリユニットを含むメモリと、a memory including one or more memory units;
1つ以上の処理ユニットを含む処理機器と、a processing device including one or more processing units;
を含み、Including,
前記メモリはコードを格納し、前記コードは前記処理機器により実行されると前記処理機器に請求項1~30のうちの一項に記載の方法を実行させるよう構成される、コンピュータシステム。A computer system, wherein the memory stores code that, when executed by the processing device, causes the processing device to perform a method according to one of claims 1 to 30.
JP2021567834A 2019-05-24 2020-04-22 Suitability of transactions for inclusion in the blockchain Active JP7646570B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1907339.4A GB2588072A (en) 2019-05-24 2019-05-24 Malleability of transactions for inclusion in a blockchain
GB1907339.4 2019-05-24
PCT/IB2020/053815 WO2020240297A1 (en) 2019-05-24 2020-04-22 Malleability of transactions for inclusion in a blockchain

Publications (3)

Publication Number Publication Date
JP2022532886A JP2022532886A (en) 2022-07-20
JPWO2020240297A5 JPWO2020240297A5 (en) 2023-04-05
JP7646570B2 true JP7646570B2 (en) 2025-03-17

Family

ID=67385380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021567834A Active JP7646570B2 (en) 2019-05-24 2020-04-22 Suitability of transactions for inclusion in the blockchain

Country Status (6)

Country Link
US (2) US12047443B2 (en)
EP (1) EP3973663A1 (en)
JP (1) JP7646570B2 (en)
CN (1) CN114008969B (en)
GB (1) GB2588072A (en)
WO (1) WO2020240297A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201913987D0 (en) * 2019-09-27 2019-11-13 Nchain Holdings Ltd Time-locked blockchain transactions and related blockchain technology
CN114078007A (en) * 2020-08-19 2022-02-22 富泰华工业(深圳)有限公司 Blockchain-based transaction method, device and readable storage medium
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
GB2615820B (en) * 2022-02-22 2024-10-30 Nchain Licensing Ag Data exchange attestation method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009277217A (en) 2008-03-31 2009-11-26 Symantec Corp Dynamic insertion and removal of virtual software sub-layer
WO2018020389A2 (en) 2016-07-29 2018-02-01 Chain Holdings Limited Blockchain implemented method and system
WO2018078520A1 (en) 2016-10-25 2018-05-03 nChain Holdings Limited Blockchain-based method and system for specifying the recipient of an electronic communication
JP2019507446A (en) 2015-12-21 2019-03-14 コチャバ インコーポレイテッドKochava Inc. Self-regulatory transaction system, method, program, data processing device system, computer-readable storage medium system, computer program product, and computer program product

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023537A1 (en) 2001-07-26 2003-01-30 Joshi Rohit Ricky System and method for negotiating prices in an automated auction forum
US7036008B2 (en) 2003-04-17 2006-04-25 International Business Machines Corporation Autonomic determination of configuration settings by walking the configuration space
US7991645B2 (en) 2006-09-20 2011-08-02 Microsoft Corporation Multiparty computer-assisted haggling
US8291097B2 (en) 2007-01-10 2012-10-16 Microsoft Corporation Dynamic transaction protocol upgrades
US8112800B1 (en) 2007-11-08 2012-02-07 Juniper Networks, Inc. Multi-layered application classification and decoding
WO2009131538A1 (en) 2008-04-21 2009-10-29 Agency For Science, Technology And Research A portable system and method for remotely accessing data
US20150178725A1 (en) 2013-12-23 2015-06-25 Nicholas Poetsch Transaction authorization control and account linking involving multiple and singular accounts or users
US10776761B2 (en) 2014-03-18 2020-09-15 nChain Holdings Limited Virtual currency system
US9621650B2 (en) 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
US10592985B2 (en) 2015-03-02 2020-03-17 Dell Products L.P. Systems and methods for a commodity contracts market using a secure distributed transaction ledger
CN109074562B (en) * 2016-02-23 2023-07-25 区块链控股有限公司 Combined data transmission control method and system based on block chain
BR112018016821A2 (en) 2016-02-23 2018-12-26 Nchain Holdings Ltd computer-implemented system and methods
JP6511201B1 (en) * 2016-02-23 2019-05-15 エヌチェーン ホールディングス リミテッドNchain Holdings Limited Registry and Automated Management Method for Sophisticated Trading Enforced by Blockchain
EP3748903A1 (en) 2016-02-23 2020-12-09 Nchain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
US11488120B2 (en) 2016-02-23 2022-11-01 nChain Holdings Limited Methods and systems for the efficient transfer of entities on a blockchain
CN108292402B (en) 2016-02-23 2022-10-04 恩链控股有限公司 Determination of a common secret and hierarchical deterministic keys for the secure exchange of information
WO2017152037A1 (en) 2016-03-04 2017-09-08 1Usf, Inc. Systems and methods for media codecs and containers
GB201605032D0 (en) 2016-03-24 2016-05-11 Eitc Holdings Ltd Recording multiple transactions on a peer-to-peer distributed ledger
EP4617978A1 (en) 2016-04-11 2025-09-17 nChain Licensing AG Computer-implemented methods and systems for validating tokens for blockchain-based cryptocurrencies
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
US11341484B2 (en) * 2016-04-29 2022-05-24 Nchain Holdings Ltd. Implementing logic gate functionality using a blockchain
GB201613174D0 (en) * 2016-07-29 2016-09-14 Eitc Holdings Ltd Computer-implemented system and method
CN109478280B (en) * 2016-07-29 2023-08-22 区块链控股有限公司 Method and system for realizing block chain
WO2018092443A1 (en) 2016-11-17 2018-05-24 テルモピレー株式会社 Digital content commerce management device, digital content commerce management method, and program
US20180293629A1 (en) 2017-03-06 2018-10-11 David Joel Roman Immersive crowdfunding and crowdsourcing system
GB201705749D0 (en) 2017-04-10 2017-05-24 Nchain Holdings Ltd Computer-implemented system and method
GB201705858D0 (en) 2017-04-11 2017-05-24 Nchain Holdings Ltd Computer-implemented system and method
GB201707788D0 (en) 2017-05-15 2017-06-28 Nchain Holdings Ltd Computer-implemented system and method
US11132704B2 (en) * 2017-07-06 2021-09-28 Mastercard International Incorporated Method and system for electronic vouchers via blockchain
WO2019010459A1 (en) 2017-07-07 2019-01-10 Buki Pablo Javier Methods and systems for processing high volume, fast settlement blockchain transactions
BG112542A (en) 2017-07-14 2019-01-31 Ганчо МИТЕВ Autonomous lifebelt
US10839379B2 (en) * 2017-07-20 2020-11-17 Chicago Mercantile Exchange Inc. Blockchain including linked digital assets
US11362834B2 (en) 2017-07-24 2022-06-14 Comcast Cable Communications, Llc Systems and methods for managing digital rights
US12346902B2 (en) 2017-08-15 2025-07-01 Nchain Licensing Ag Rewarded puzzle solution
US11234033B2 (en) 2017-08-20 2022-01-25 Cisco Technology, Inc. Decentralized content distribution
CN111357032A (en) 2017-08-25 2020-06-30 托肯Iq公司 Method and apparatus for value transfer
US20200349565A1 (en) 2017-08-29 2020-11-05 nChain Holdings Limited Constraints on inputs of an unlocking transaction in a blockchain
US20190095879A1 (en) * 2017-09-26 2019-03-28 Cornell University Blockchain payment channels with trusted execution environments
US10891384B2 (en) * 2017-10-19 2021-01-12 Koninklijke Kpn N.V. Blockchain transaction device and method
US11165862B2 (en) 2017-10-24 2021-11-02 0Chain, LLC Systems and methods of blockchain platform for distributed applications
US20210217002A1 (en) 2017-10-24 2021-07-15 0Chain Corp. Blockchain content purchasing protocol
US10250708B1 (en) 2017-12-26 2019-04-02 Akamai Technologies, Inc. High performance distributed system of record
US10789589B2 (en) 2017-12-29 2020-09-29 Paypal, Inc. Dispute resolution cryptocurrency sidechain system
JP6487091B1 (en) 2018-03-29 2019-03-20 株式会社電通 ICO management method, communication device, ICO management system and program
GB201806112D0 (en) 2018-04-13 2018-05-30 Nchain Holdings Ltd Computer-implemented system and method
US11562398B2 (en) 2018-05-22 2023-01-24 Crackle, Inc. Advertisement networks
CN109308658A (en) * 2018-09-11 2019-02-05 北京永恒纪元科技有限公司 A kind of decentralization assets trustship clearance plateform system of highly effective and safe
EP3866382B1 (en) 2018-11-27 2023-06-21 Advanced New Technologies Co., Ltd. System and method for information protection
US11544252B2 (en) 2019-12-17 2023-01-03 Akamai Technologies, Inc. High performance distributed system of record with extended transaction processing capability

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009277217A (en) 2008-03-31 2009-11-26 Symantec Corp Dynamic insertion and removal of virtual software sub-layer
JP2019507446A (en) 2015-12-21 2019-03-14 コチャバ インコーポレイテッドKochava Inc. Self-regulatory transaction system, method, program, data processing device system, computer-readable storage medium system, computer program product, and computer program product
WO2018020389A2 (en) 2016-07-29 2018-02-01 Chain Holdings Limited Blockchain implemented method and system
WO2018078520A1 (en) 2016-10-25 2018-05-03 nChain Holdings Limited Blockchain-based method and system for specifying the recipient of an electronic communication

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
淵田 康之,特集:イノベーションと金融 ブロックチェーンと金融取引の革新,野村資本市場クォータリー,日本,株式会社野村資本市場研究所,2015年11月01日,第19巻第2号(通巻74号),p.11-35

Also Published As

Publication number Publication date
GB2588072A (en) 2021-04-21
US20220255992A1 (en) 2022-08-11
WO2020240297A1 (en) 2020-12-03
GB201907339D0 (en) 2019-07-10
US12095859B2 (en) 2024-09-17
EP3973663A1 (en) 2022-03-30
JP2022532886A (en) 2022-07-20
CN114008969A (en) 2022-02-01
CN114008969B (en) 2025-07-11
US20240022631A1 (en) 2024-01-18
US12047443B2 (en) 2024-07-23

Similar Documents

Publication Publication Date Title
JP7646570B2 (en) Suitability of transactions for inclusion in the blockchain
JP7532414B2 (en) Streaming portions of data over a side channel
JP7716435B2 (en) Consensus on the Blockchain
JP7688046B2 (en) A method for implementing a digital coin system using blockchain
JP7543313B2 (en) Multiple Input Transactions
US20230036852A1 (en) Single-use tokens
US20230316272A1 (en) Divisible tokens
US20240323018A1 (en) A computer implemented system and method
EP4046114A1 (en) Single-use tokens
CN116671061A (en) Node version control
TW202329668A (en) Proving and verifying an ordered sequence of events
JP2024547095A (en) Blockchain Transactions
JP2024500923A (en) transaction signature flag
US20240313952A1 (en) Message exchange system

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20241129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250305

R150 Certificate of patent or registration of utility model

Ref document number: 7646570

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载