JP7646570B2 - Suitability of transactions for inclusion in the blockchain - Google Patents
Suitability of transactions for inclusion in the blockchain Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
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トランザクション(「Tx1」)は、第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トランザクションTx1のアウトプットをアンロックするよう構成される。一方、第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トランザクションのインスタンス(Tx1,Tx2,Tx3,…)は、ネットワークの各ノードにより、実質的に同じトランザクションのインスタンスとして認識されてよい。従って、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つ(Tx1,Tx2,Tx3,…)がターゲットトランザクションのバージョンのうちの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トランザクションのインスタンス(Tx1,Tx2,Tx3,…)の送信を停止した場合、その時点より前に送信されたデータ部分についての支払いを償還するために(従って、送信された最新のデータ部分のみを失う)、Bobは、Aliceへの更なるデータ部分の送信を停止し、ターゲットトランザクションの第1バージョンTxpをネットワークへ送信するオプションを依然として有する。反対に、任意の時点で、Bobがデータ部分の送信を停止した場合、Aliceは、第1トランザクションの更なるインスタンスTx1の送信を停止するオプションを有し、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.
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
適応性は、暗号法において既存の概念である。これは、通常、セキュリティ関心事を支え、それによりメッセージが悪意を持って変更され得るが、依然として真正であるとして受け入れられる。デジタル署名方式は、この関心事を解決するために設計される。ブロックチェーンでは、しかしながら、適応性は、トランザクションを全体として無効にすることなく、トランザクションの少なくとも部分を変更する能力を表す。関連する形式の暗号署名(例えば、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
ブロックチェーン150は、データのブロック151のチェーンを指し、ブロックチェーン150のそれぞれのコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク160内の複数のノードのそれぞれにおいて維持される。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、この文脈ではトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、そのアウトプットが暗号的にロックされている(アンロックされ、それによって償還又は使用されるために、そのユーザ103の署名を必要とする)ユーザに属するデジタルアセットの数量を表す額(amount)を指定する。各インプットは、先行するトランザクション152のアウトプットを逆にポイントし、それによってトランザクションをリンクする。
ノード104の少なくとも幾つかは、トランザクション152を転送し、それによって伝播する転送ノード104Fの役割を引き受ける。ノード104の少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を担う。ノード104の少なくとも幾つかは、記憶ノード104S(「フル(full-copy)」ノードとも呼ばれる)の役割を引き受け、各ノードは、それぞれのメモリに同じブロックチェーン150のそれぞれのコピーを格納する。各マイナーノード104Mは、マイニングされてブロック151にされることを待ってるトランザクション152のプール154も維持する。所与のノード104は、転送ノード104、マイナー104M、記憶ノード104S、又はこれらの2つ若しくは全部の任意の組み合わせであり得る。
At least some of the
所与の現在のトランザクション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
現在のトランザクション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
上記は「アウトプットベースの」トランザクションプロトコルと呼ばれることがあり、時には「未使用のトランザクションアウトプット(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"
アカウントベースのトランザクションモデルの一部として、別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションの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
アウトプットベースのモデルでは、与えられたアウトプット(例えば、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
パズルを解く最初のマイナーノード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
パズルを解決するために常に競争している異なるマイナー104Mは、いつ解を探し始めたかによって、いつでもマイニングされていないトランザクションプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、現在のマイニングされていないトランザクションのプール154が更新される。そして、マイナー104Mは、新たに定義された未解決のプール154からブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2人のマイナー104Mが互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾したビューが伝播する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。
Note that
ほとんどのブロックチェーンでは、勝ったマイナー104Mは、何も無いものから新しい量のデジタルアセットを生み出す特別な種類の新しいトランザクションによって自動的に報酬を受けている(通常のトランザクションでは、あるユーザから別のユーザにデジタルアセットの額を移転する)。したがって、勝ったノードは、ある量のデジタルアセットを「マイニング」したと言われる。この特殊なタイプのトランザクションは「生成(generation)」トランザクションと呼ばれることもある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがproof-of-work競争に参加するインセンティブを与える。多くの場合、通常の(非生成)トランザクションは、そのトランザクションが含まれたブロック151nを生成した勝ったマイナー104Mにさらに報酬を与えるために、追加のトランザクション手数料をそのアウトプットの1つにおいて指定する。
In most blockchains, the winning
マイニングに含まれる計算リソースのために、典型的には、少なくともマイナーノード104Mの各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。各転送ノード104M及び/又は記憶ノード104Sは、サーバ又はデータセンタの形態をとることもできる。しかしながら、原則として、任意の所与のノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末のグループを含むことができる。
Due to the computational resources involved in mining, typically at least each of the
各ノード104のメモリは、それぞれの1つ以上の役割を実行し、ノードプロトコルに従ってトランザクション152を処理するために、ノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ノード104に属するいずれの動作も、それぞれのコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。
The memory of each
また、ネットワーク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
各パーティ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
クライアントアプリケーション又はソフトウェア105は、最初に、1つ以上の適切なコンピュータ読取可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。
The client application or
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、それぞれのユーザパーティ103が、ノード104のネットワーク全体にわたって伝播され、それによってブロックチェーン150に含まれるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの額をそれぞれのパーティに報告することである。アウトプットベースのシステムでは、この第2の機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。
The
各コンピュータ機器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
上述のように、ブロックチェーン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
所与のパーティ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
新たに受信されたトランザクション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
ひとたび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
図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
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
例えばAlice103aは、問題のデジタルアセットの額をBob103bに移転するトランザクション152jを作成したいと考えているとする。図2において、Aliceの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、Aliceへのロックされているデジタルアセットの額を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、図2において「Tx0」とラベル付けされている。Tx0とTx1は、単なる任意のラベルである。これらは、必ずしも、Tx0がブロックチェーン151の最初のトランザクションであること、又は、Tx1がプール154の直ぐ次のトランザクションであることを意味しない。Tx1は、まだAliceへのロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションのいずれかを指し示すことができる。
For example,
先行するトランザクション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
先行するトランザクションTx0の1つ以上のアウトプット203のうちの1つは、本明細書でUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの額を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。
One of the one or
ロックスクリプト(別名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
図示の例では、Tx0のアウトプット203のUTXO0は、ロックスクリプト[ChecksigPA]を含み、これは、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[ChecksigPA]は、Aliceの公開鍵と秘密鍵のペアからの公開鍵PAを含む。Tx1のインプット202は、Tx1を指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx0全体のハッシュであるTxID0による)を含む。Tx1のインプット202は、Tx0の任意の他の可能なアウトプットの中でそれを識別するために、Tx0内のUTXO0を識別するインデックスを含む。Tx1のインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。
In the illustrated example, UTXO 0 in
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。
公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、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
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
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
実際には、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
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎であることに留意する。従って、このようなトランザクションは、伝播されず、マイニングされてブロック151にされることもない。
Note that if the total amount specified in all of a given transaction's 152
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
スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語ではない)ことに注意する。例えば、[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
署名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
図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
サイドチャネル301は、P2Pオーバレイネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置102a、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりP2Pオーバレイネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると表される場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンクまたは同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
The
<例示的な定義>
以下は、幾つかの実装において採用得る幾つかの例示的な定義である。これらは、全部の可能な実装を限定するものではなく、後述する例示的な使用例の幾つかの可能な実装において利用され得る特定の可能な実装の理解を助けるためだけに提供されることに留意する。
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つも付加する必要がある。
適応性を機能として議論するとき、トランザクション内で、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つの可能なメカニズムを纏めたものである。
定義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
UIレイヤ402は、それぞれのユーザコンピュータ機器102のユーザ入力/出力(I/O)手段を介して、機器102のユーザ出力手段によりそれぞれのユーザ103へ情報を出力すること及び機器102のユーザ入力手段によりそれぞれのユーザ103から入力を受信することを含む、ユーザインタフェースをレンダリングするよう構成される。例えば、ユーザ出力手段は、視覚出力を提供する1つ以上のディスプレイスクリーン(タッチ又は非タッチスクリーン)、オーディオ出力を提供する1つ以上のスピーカ、及び/又は触覚出力を提供する1つ以上の触覚出力装置、等を含み得る。ユーザ入力手段は、例えば、(出力手段のために使用されるものと同じ又は異なる)1つ以上のタッチスクリーンの入力アレイ、マウス、トラックパッド、若しくはトラックボールのような1つ以上のカーソルに基づく装置、会話若しくは音声入力を受信する1つ以上のマイクロフォン及び会話若しくは音声認識アルゴリズム、手動若しくは身体ジェスチャの形式で入力を受信する1つ以上のジェスチャに基づく入力装置、又は1つ以上の機械的ボタン、スイッチ、若しくはジョイスティック、等を含み得る。
The
注:本願明細書において種々の機能が同じクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、それらは2つ以上の異なるアプリケーションのスーツに実装されてよく、例えば一方が他方へのプラグインである。例えば、トランザクションエンジン401の機能は、UIレイヤ402と別個のアプリケーション、又は所与のモジュールの機能に実装されてよく、トランザクションエンジン401が1つより多くのアプリケーションの間で分割されてよい。また、記載の機能の一部又は全部が、例えばオペレーティングシステムレイヤに実装されることを除外しない。本願明細書のどこかで、単一の又は所与のアプリケーション105等を参照する場合、これが単に例であること、より一般的には、記載の機能が任意の形式のソフトウェアで実装され得ることが理解される。
Note: Although various functions may be described herein as being integrated into the
図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
どんな手段が使用されても、オプションの各々は第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
図5に示されるUI500は、単なる概略的な模擬表示であり、実際には、それは、簡潔さのために図示されない1つ以上の更なるUI要素を含んでよいことが理解される。
It will be understood that the
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
図6は、本願明細書に開示される実施形態に従い使用するためのトランザクション152のセットを示す。セットは、第0トランザクションTx0、第1トランザクションTx1、及び第2トランザクションTxp/Txp’を含む。これらの名称は単に便宜上のラベルであることに留意する。それらは、必ずしも、これらのトランザクションが直ちに1つずつブロック151又はブロックチェーン150内に置かれること、又は第0トランザクションがブロック151又はブロックチェーン150内の最初のトランザクションであることを意味しない。また、これらのラベルは、それらのトランザクションがネットワーク106へ送信される順序に関して何も示唆しない。それらは、単に、1つのトランザクションのアウトプットが次のトランザクションのインプットによりポイントされる論理的シリーズを表す。幾つかのシステムでは、親をその子の後にネットワーク106へ送信することが可能であることを思い出してほしい(この場合、「親のない」子がある期間の間、1つ以上のノード104においてバッファされ、その間、親が到着するのを待っている)。
6 shows a set of
2つのトランザクションTxp又はTxp’は、両者が第1トランザクションの同じアウトプット(例えば、同じUTXO)を参照するインプットを含む場合、(実質的に)同じトランザクションのバージョンであると言える。異なるバージョンは、そのアウトプットの異なるアンロック条件を満たすことにより、異なる機能を提供し得る。異なるバージョンは、両方とも、同一のインプット署名も含んでよい(つまり、いずれのインスタンスの中の署名済みメッセージが同一である)。後述する幾つかの実施形態は、第1トランザクションの異なるインスタンスTxi(ここで、i=1,2,3,…)も含んでよい。2つ(以上)のトランザクションは、ここでは、両者が同じソーストランザクション(又は「第0」トランザクション)の同じアウトプット(例えばUTXO)Tx0を参照するインプットを含む場合、(実質的に)同じ第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
第0トランザクションTx0は、本発明の目的のためにソーストランザクションと呼ばれてもよく、Alice103aへのロックされたデジタルアセットの額のソースとして機能する。第1トランザクションTx1は、本発明の目的のために、中間トランザクション又は条件付きトランザクションと呼ばれてもよく、ソーストランザクションTx0からデジタルアセットの額を条件付きで移転する仲介として機能する。第2トランザクションTxp/Txp’はターゲットトランザクション又は支払いトランザクション(ここでは添え字「P」)と呼ばれてもよく、条件のうちの1つをアンロックし、Bob(又は場合によっては、Bobが代表を務める受益者)への支払いを提供するトランザクションである。上述のように、ターゲットトランザクションは、2つのバージョン、第1バージョンTxp及び第2バージョンTxp’を有する。これらのトランザクションは、それぞれ、Alice(第1パーティ)のコンピュータ機器102a又はBob(第2パーティ)のコンピュータ機器102b、或いは第三者のコンピュータ機器(図示しない)、又はこれらの任意の組合せ、のいずれかにおいて少なくともある時点で存在し、明示される。2つのバージョンTxp及びTxp’は、並列に一緒にある期間の間、又は1つずつ、又は部分的に時間において重複して、存在してよい。
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
図6に示すように、ソーストランザクションTx0は、デジタルアセットの額を指定する少なくとも1つのアウトプット2030(例えば、Tx0のアウトプット0)、及びAlice103aへのこのアウトプットをロックするロックスクリプトを更に含む。これは、ソーストランザクションTx0のロックスクリプトが、少なくとも1つの条件が満たされることを要求することを意味する。この条件は、アウトプットをアンロックしようとする(従って、デジタルアセットの額を償還する)任意のトランザクションのインプットが、そのアンロックスクリプト内にAliceの暗号署名(つまり、Aliceの公開鍵を使用する)を含まなければならないことである。この意味で、Tx0のアウトプット内で定義される量は、Aliceにより所有されると言える。アウトプットは、UTXOと呼ばれてよい。どの先行するトランザクションのアウトプットがTx0のインプットをポイントするかは(それらが、Tx0の合計アウトプットをカバーするのに十分である限り)、本発明の目的のために特に重要ではない。
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
本発明の場合には、ソーストランザクションTx0のアウトプットをアンロックするトランザクションは、第1又は中間トランザクションTx1である。従って、Tx1は、Tx0の関連するアウトプット(図示の例ではTx0のアウトプット0)へのポインタを含み及び該アウトプットのロックスクリプト内で定義された条件に従いTx0のポイントされたアウトプットをアンロックするよう構成される、少なくともAliceの署名を要求するアンロックスクリプトを更に含む、少なくとも1つのインプット2021(例えばTx1のインプット0)を有する。Tx0のロックスクリプトにより要求されるAliceからの署名は、Tx1の特定の部分に署名することが要求される。幾つかのプロトコルでは、署名される必要のあるTx1の部分は、Tx1のアンロックスクリプト内で定義された設定であり得る。例えば、これは、署名に付加される1バイトであるSIGHASHフラグにより設定されてよい。従って、データの観点では、アンロックスクリプトは次の通りである:<Sig PA><sighashflag><PA>代替として、署名される必要のあるの部分は、単にTx1.の固定部分であってよい。いずれの方法も、署名されるべき部分は、標準的に、アンロックスクリプト自体を除き、及びTx1のインプットの一部又は全部を除いてよい。これは、Tx1のインプットが適応性があることを意味する。
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
第1又は中間トランザクションTx1は、少なくとも1つのアウトプット2031(例えば、ここでもアウトプットがUTXOと呼ばれてよいTx1のアウトプット0)を有する。中間トランザクションTx1のアウトプットは、無条件には任意の1つのパーティにロックされない。Tx0と同様に、それは、転送されるべきデジタルアセットの額を指定する少なくとも1つのアウトプット(例えば、Tx1のアウトプット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.,
第2の、ターゲットトランザクションTxp/Txp’は、少なくとも1つのインプット202p(例えば、Txp/Txp’のインプット0)を有し、該インプットは、Tx1の上述のアウトプット(図示の例ではTx1のアウトプット0)へのポインタを含み、Tx1のロックスクリプトの中で定義された複数の代替条件のうちの1つを満たすことに基づきTx1の該アウトプットをアンロックするよう構成されるアンロックスクリプトも更に含む。ターゲットトランザクションの第1バージョンTxpでは、ロックスクリプトは、第1条件、条件1を満たすよう構成される。幾つかのポイントで、ターゲットトランザクションの第2バージョンTxp’も生成される。第2バージョンでは、アンロックスクリプトは、第2条件、条件2を満たすよう構成される。
The second, target transaction Tx p /Tx p ' has at least one
第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
実施形態では、第1条件は、Tx1、この場合にはターゲットトランザクションの第1バージョンTxp、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内に、Bobの暗号署名、及び/又はBobが提供又は含めなければならないBobのデータであってよいデータペイロード、を含むことを要求する。データペイロードを含むという要件は、Tx1のロックスクリプトに含まれるハッシュチャレンジにより課されることができる。チャレンジは、データのハッシュ(データ自体ではない)、及び(アンロックスクリプトと一緒にノード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
実施形態では、第2条件は、Tx1、この場合にはターゲットトランザクションの第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(つまりソース)トランザクションTx0は、Alice、Bob、又は第三者により生成されてよい。それは、標準的に、AliceがTx0のインプット内に定義された量を取得した先行するパーティの署名を要求する。それは、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
第1(つまり中間、条件付き)トランザクションTx1も、Alice、Bob、又は第三者により生成されてよい。実施形態では、それはAliceの署名を要求するので、それはAliceにより生成されてよい。代替として、それは、Bob又は第三者によりテンプレートとして生成され、次に署名のためにAliceへ送信されてよく、例えばサイドチャネル301を介して送信される。Aliceは、次に、署名付きトランザクションをネットワーク106へ彼女自身で送信し、又はそれをBob若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼女の署名をBob若しくは第三者へ送信して、署名付きTx1に構成してネットワーク106へ転送できる。ここでも、Tx1をネットワーク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
第2の(つまり、ターゲット又は支払い)トランザクションTxp/Txp’のいずれのバージョンも、Alice、Bob、又は第三者により生成されてよい。第1バージョンはBobの署名及び/又はデータを要求するので、Bobにより生成されてよい。代替として、それは、Alice又は第三者によりテンプレートとして生成され、次に、署名し及びデータを追加するためにBobへ送信されてよく、例えば、サイドチャネル301を介してBobへ送信される。Bobは、次に、署名付きトランザクションをネットワーク106へ彼自身で送信し、又はそれをAlice若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼の署名をAlice若しくは第三者へ送信して、署名付きTxpに構成してネットワークへ転送できる。実施形態では、第2バージョンは、Bob及びAliceの両方の署名を必要とする。従って、それは、Alice又はBobによりテンプレートとして生成され、彼らの署名を追加するためにテンプレートとして他方へ、例えばここでもサイドチャネル301を介して送信されてよい。代替として、それは、第三者によるテンプレートとして生成され、次にAliceへ送信され得る。ここで、Aliceは、彼女の署名を追加し、Bobの署名を追加するためにBobへ転送得る。Bobは、次に、署名付きトランザクションをネットワーク106へ転送するか、又はAlice若しくは第三者がネットワーク106へ転送するように、彼らへ返送する。或いは、Txp’は、第三者によりテンプレートとして生成され、次にBobへ送信され得る。ここで、Bobは、彼の署名を追加し、Aliceの署名を追加するためにAliceへ転送する。Aliceは、次に、署名付きトランザクションをネットワーク106へ転送するか、又はBob若しくは第三者がネットワーク106へ転送するように、彼らへ返送する。更なる変形では、Alice及び/又はBobは、受信したトランザクションテンプレートに署名し、彼らの署名を他のパーティのうちの1つへ返し、該パーティがTxp’へと構成して、ネットワーク106へ転送する。ここでも、Txp及び/又はTxp’をネットワーク106へ送信する前の任意のオフチェーン交換は、サイドチャネル301を介して実行されてよい。
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
トランザクションの異なる要素が生成され構成され得る種々の位置があり、それが直接に又は間接的に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
「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
ターゲットトランザクション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.
幾つかの実施形態では、Tx1のロックスクリプトは、第1及び第2条件の両方に対する代替として、第3アンロック条件を含んでよい。第3条件は、ロックタイムが終了すること、及びAliceの署名がターゲットトランザクションの第3バージョンTxp’’のアンロックスクリプトに含まれることを要求してよい。これは、(例えば、Bobが処理に全く従事しないため又は時間制限内にそうすることに失敗したために)Bobが第1及び第2条件のいずれかに基づき請求しない場合に、AliceがTx1のアウトプットからの彼女の支払いの返金を請求することを可能にする。ロックタイムは、絶対的時点、又は例えば秒で計測される経過すべき時間期間、又はマイニングされるブロック数として定義されてよい。
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
例示的な使用例1-Bobのためのセキュリティ
上述のように、実施形態では、Tx1で、第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は、アウトプット(上述の例を参照するとTx1のアウトプット0)内にサービスに対する支払いを含む第1(中間)トランザクションTx1を生成する。彼女はこれをサイドチャネル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 (
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
ターゲットトランザクションTxpは、最初に、データペイロードを含み、従って、Aliceの署名を必要としないが、データペイロードがアンロックスクリプトに含まれている場合にのみ、Bobにより(又はBobを代表して)一方的に償還可能である。これは、マイニングされるのにより費用がかかり、及び/又はBobのプライベートな又は独自のデータを危うくする可能性がある。従って、Bobは、Aliceを幸せに保ち、彼女に、彼女の署名を含むターゲットトランザクションの第2の、更新バージョンTxp’を提供すること(又はBob又は第三者がターゲットトランザクションTxp’へと構成する彼女の署名を送信する)を望む。これは、ターゲットトランザクションTxp’にデータペイロードを含む必要を伴わずに、BobがTx1のアウトプットを償還することを可能にする。しかしながら、Bobがサービスを提供するが、Aliceが合意を破った、又はサービスの満足のいく提供に論争がある場合、Bobは、データペイロードがターゲットトランザクションTxpに含まれることを要求するあまり好ましくない第1条件に基づき、Tx1のアウトプットを償還するというフォールバックを依然として有する。 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
第1トランザクションTx1及び実際にはソーストランザクションも、ブロックチェーン150に記録するために、ネットワーク106へブロードキャストされる必要がある。これは、それらが何らかの段階で最終的に検証される限り、任意のパーティにより任意の時点で行われ得る。
The first transaction Tx1 , and indeed also the source transaction, needs to be broadcast to the
第1条件がAliceの署名を要求しないという事実は、Aliceが彼女の署名により彼女の認可を提供しない場合でも、Bobが、Tx1のアウトプットの中で定義された量を、ターゲットトランザクションの第1バージョンTxpを用いて第1条件に基づき自動的に償還できることを意味する。しかしながら、データペイロードを含むという要件は煩わしい。マイナー104Mは、マイニングのためにトランザクションを受け入れるためにマイニング手数料を要求する。手数料が十分ではない場合、トランザクションが有効であっても(有効性及び受け入れ可能性は、別個の概念である)、彼らはブロック151へとマイニングするためにトランザクションを受け入れない。代替又は追加で、対象となるデータは、Bobにとって秘密、機密、又は独自であってよい。その結果、データをブロックチェーン150に発行することは、Bobに別の形式のペナルティを提示し得る。従って、Bobは、Aliceの署名を取得しようとするために、及びターゲットトランザクションの第2バージョンTxp’を用いて好ましい第2条件に基づきTx1を償還するために、良好なサービスを提供することを動機付けられる。しかしながら、Aliceが違反した場合、Bobは、ターゲットトランザクションの第1バージョンTxpを用いて、あまり好ましくない第1条件に基づき、依然としてTx1を償還できる。従って、第1バージョンTxpは、Bobにとって一種の抵当又はデポジットとして機能する。
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.
Tx1がAliceにより形成された場合でも、Tx1のロックスクリプト内の第1条件の中の要件は、データペイロード自体がTx1のロックスクリプトに含まれること又はAliceに知られることを要求しないことに留意する。むしろ、それは、(ノード104においてハッシングされるとアンロックスクリプト内のハッシュ値と一致するデータを提供するために、Txpのアンロックスクリプトをチャレンジするスクリプトと一緒に)データペイロードのハッシュがTx1のロックスクリプトに含まれることを要求するだけである。従って、Alice又は第三者がTx1を形成する場合でも、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
例示的な使用例2-ストリーミング
図7を参照すると、例えばAliceはBobからの何らかのデータをストリーミングするために支払いたいと望む。データは、BobからAliceへ「チャンク毎に」、つまり部分D0,D1,D2,等のシーケンスで、転送される。これらは、例えば、AliceがBobからストリーミングしているメディアコンテンツのアイテムの部分であってよく、例えば映画のようなビデオトラック及び/又は音楽のようなオーディオトラックを含む。ビデオは、任意の時間と共に変化する画像又はグラフィック、例えば映画、TV番組、スライドショー、又は他のそのようなシーケンス若しくは静止画像、アニメーションベクトルグラフィック、及び/又はゲームコンテンツを含んでよい。オーディオは、サンプリングされたオーディオ及び/又は合成されたオーディオを含み、会話、音楽、ノイズ、及び/又は効果、等を含み得る。別の例では、以下の技術は、「彼女が支払う限り(pay as she goes)」Aliceにサービス、例えば、ガス、電気、又は水道のような生活必需サービスの提供、又は車両、不動産、又は他の物理的オブジェクトのレンタル、を可能にするために使用され得る。サービスに対する支払いの場合には、データ部分が所望のコンテンツ自体の部分である代わりに、各データ部分D0,D1,D2等は、サービスのユニットをアンロックするために必要な異なるそれぞれの鍵を含む。例えば、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
Bobの支払いがそれまでに受信されたデータ部分の数に比例するように、データの部分をストリーミングすることが望ましいことがある。これを行うために、各データ部分D0,D1,D2…がBobから受信されることに応答して、Aliceは、それぞれの署名付きトランザクションTx1,Tx2,Tx3…を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
しかしながら、ストリーミングされているそれぞれの個別のデータ部分D0,D1,D2等について個別のトランザクションをネットワーク106にブロードキャストしブロックチェーン150に記録することはネットワーク輻輳を増大しブロックチェーン150を膨大にし得るので、そうする必要がない方法でこれを行うことも望ましい。
However, it is also desirable to do this in a way that does not require broadcasting to the
これを解決するために、AliceがBobからそれぞれ受信する各データ部分D0,D1,D2…に応答して、AliceがBobへ返送する各トランザクションTx1,Tx2,Tx3…は、同じソーストランザクションTx0の同じアウトプット(例えば、同じ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にシーケンス内のデータ部分D0,D1,D2…のハッシュセットを利用可能にする。例えば、Bobは、Aliceにハッシュセットを支払いチャネル301を介して送信してよく、又はインターネット101等のサーバからアクセスするためにそれを公に利用可能にしてよい。ハッシュセットは、Alice自身がデータ自体を予め知る必要がなく、Aliceがデータのハッシュチャレンジを生成することを可能にするハッシュのセットを含む。例えば、ハッシュセットは、マークル(Merkle)ツリーとしても知られるハッシュツリーを含んでよい(用語「マークルツリー」は、本願明細書で、その最も広義の意味で使用され、任意のハッシュツリーを意味し、例えば必ずしもバイナリブランチに限定されないことに留意する)。代替として、ハッシュセットはハッシュチェーン又はハッシュリストを含み得る。
To implement the streaming method, Alice and Bob establish an off-
Bobは、Aliceに第1データ部分D0を支払いチャネル301を介して送信することにより開始する。この第1部分は無料で又は信頼して送信される。Aliceが支払わない場合、Bobは第1部分のデータ価値より多くを失わない。Aliceが継続を望むとすると、D0を受信することに応答して、彼女は、Bobに第1トランザクションの第1インスタンスTx1を支払いチャネル301を介して送信する。これに応答して、Bobは、Aliceにシーケンスの中で次のデータ部分を送信し、次に、これに応答して、AliceはBobに第1トランザクションの第2インスタンスTx2を送信し、次に、BobはAliceにD2を送信し、AliceはBobにTx2を送信し、以下同様であり、全ては支払いチャネル301を介する。第1トランザクションの各インスタンスTx1,Tx2,Tx3…は、Bobへの増大する、例えばそれまでに受信したデータ部分Dの数と共に線形に増大する支払いを指定する。しかしながら、第1トランザクションの各インスタンスTx1,Tx2,Tx3…は、Aliceの同じUTXOを指す。従って、Bobは、第2の、ターゲットトランザクションの有効なインスタンスTxp/Txp’を構成し、それらのうちの1つからの支払いを請求するだけでよい(同じUTXOを2回償還しようとする試みは、無効であるとしてネットワーク106により拒否されるだろう)。全てが上手く行くとすると、Bobは、従って、シーケンスの中の第1トランザクションの最後のインスタンスからの支払いを請求する、ターゲットトランザクションのバージョンを生成する。
Bob begins by sending Alice a first data portion D0 over the
実施形態では、第1トランザクションの各インスタンスTx1,Tx2,Tx3…又は最後のインスタンスTxnは、(例えば図5を参照して)上述したように、該トランザクションのアウトプットの中で、Aliceからの支払いを償還するための複数の代替条件を定義する。この場合、シーケンスの中の最後のデータ部分DnのAliceの肯定応答と共に、彼女は、ターゲットトランザクションの第2バージョンTxp’も提供するか、又は少なくとも彼女の署名を提供して、BobがTxp’を構成できるようにする。これは、Bobが、Bobにペナルティを課す第1条件ではなく、好ましい第2条件に基づき、完全なシーケンス(例えば、映画全体)に対する支払いを請求することを可能にする。Bobが部分Dのストリーミングを停止し、Aliceが不満である場合、彼女は、必要に応じて第2条件を満たすために彼女の署名を提供しなくてよい。従って、Bobは、第1のあまり好ましくない条件に基づき支払いを請求できるだけである。他方で、Aliceが、不満ではないが、途中で更なる部分を要求することを止めた場合(例えば、彼女が単に映画を観るのを止めることを選んだ)、第1トランザクションのインスタンスの各々Tx1,Tx2,Tx3…がそれまでに複数の代替条件を含んでいるとすると、Aliceは、Txp’又は彼女の署名を提供してよく、Bobが、好ましい第2条件に基づき、それまでのシーケンスに対する支払いを請求できるようにする。 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トランザクションTx1…を生成し及び/又はブロードキャストするかに関して先に議論した変形、及びターゲットトランザクションの第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個の小さなデータパックD0,...,Dn、及びルートハッシュHrootを有するそれらのマークルツリーTにより定義される。方法は、AliceからBobへの一連のトランザクションTX1,TX2,...,TXnを構成する。各トランザクションTXiは、Diに対する要求、及びDi-1の受信の肯定応答に対する。理想的には、支払いチャネル301が正しく閉じられるとき、AliceからBobへの支払いを達成するために、2つのトランザクションTX'n及びTX'pのみが発行される。このシナリオは、図7に示される。図7は、使用例2におけるAliceとBobとの間の支払いチャネル301のシーケンス図である。BobからAliceへの1つの初期メッセージがあり、次に各データパケットについてn個のメッセージペアが続き、チャネルを閉じるための2つの最終メッセージがある。
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
第1ラウンド-Aliceの番:
最初に、Bobは、Aliceに、D0、及び期待されるデータパックを含む完全なマークルツリーを送信する。Aliceは、ルートハッシュが実際に彼女の選択した映画タイトルに属することをチェックし、D0のマークルパスを検証する。Aliceが受信したデータに満足すると、彼女は、彼女がTX1を受信したことの肯定応答をするために、及びD1を要求したいと思い、TX1を構成し得る。このトランザクションは以下の形式をとり得る:
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:
このインスタンスの例は図9に示される。この単一のトランザクション設計は、3つの意図される機能を有する。トランザクション内の幾つかのフィールドに追加の含意を割り当てることにより、データトレードシナリオにおいて必要な複数のメッセージを、たった1つのトランザクションテンプレートにより置き換えることが可能である。Sig(PA,Tx1)は、前のデータパックが受信され及び満足のいくものであることを肯定応答する署名である。OP_DUP OP_SHA256 <H(D1)> 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.
Tx1の(1又は複数の)インプットは、少なくともインプット0を含む。これは、Aliceに対してロックされた前のトランザクションTx0のUTXOへのポインタを含む。該UTXOは、Tx1のアウトプット0より大きい(例えば2000ユニット)額である(以下を参照)。Tx1のインプット0は、インプットのアンロックスクリプトの中にAliceの署名、及び他のパーティがインプットを追加できるようにするフラグも(「ANYONECANPAY」)含む。
The input(s) of Tx1 includes at
Tx1の(1又は複数の)アウトプットは、少なくともアウトプット0を含む。これは、Tx1のインプット0より少ない、(最初の)少額の(例えば500ユニットの)デジタルアセットを指定する。Tx1のアウトプット0は、以下の条件のうちのいずれかによりこれをアンロック可能にするロックスクリプトも含む;
(i)後続のトランザクションTxpのインプット内のアンロックスクリプトが、D1及びBobの署名を含む;
(ii)後続のトランザクションTxp’のインプット内のアンロックスクリプトが、Aliceの署名及びBobの署名を含む;或いは、
(iii)タイムアウト限度が経過し、後続のトランザクションのインプット内のアンロックスクリプトがAliceの署名を含む。
The output(s) of Tx 1 include at
(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は、どんなデータ部分が期待されるかを知っている。これは、彼女に、D1のハッシュを決定させる。これは、彼女がハッシュチャレンジによりこの条件を含めるのに十分である(Tx1のロックスクリプトは、D1のハッシュと、ハッシングされるとTxp,のインプットのアンロックスクリプト内で提示された値がロックスクリプト内の値と一致することをチェックする何らかのコードを足したものを含む)。この条件は、BobがAliceの署名を有しないで支払いを請求したい場合、彼がブロックチェーン150にD1をアップロードしなければならないことを意味する。D1は彼独自のデータであるので、更にD1のサイズは高いマイニング手数料を生じるので、彼はそうすることを好まない。この同じ技術は、後続のデータ部分D2,D3等にも使用できる。
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
条件(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
Tx1も、任意的に、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
アウトプット2はアウトプット1に等しく、Bob(「アウトプット1内のAliceのお釣り(change)と同じようにBobに支払う」)に対してロックしているデジタルアセットの額を定義するスクリプトを含む。この効果は、差分を構成するために誰か他の者が(実際にはBobしかいないだろう)彼自身の別のインプット1をTx1に追加しない限り、合計出力(例えば500+1500+1500ユニット=3500ユニット)が、常に入力より大きいことである。
アウトプット2は、AliceがBobの承認なしにトランザクションを公開することを防ぐために設計されたトリックである。支払人として、Aliceは、最初にTX1をブロードキャストする動機がない。しかしながら、数ラウンドの後、AliceがBobにより多くを支払う他のトランザクションが存在するとき、Aliceは、Bobが彼の支払いを請求するために後のインスタンスを使用する前に、TX1を用いてそれをネットワーク106へブロードキャストすることにより、それらを無効にし得る。アウトプット2を含むことにより、Bobがアウトプットとインプットとの間の不足額をカバーするために彼自身のインプット(インプット1)をTX1に追加するまで、TX1は、有効にならない。AliceがSIGHASHフラグ「ALL|ANYONECANPAY」を使用するので、Bobは追加のインプットを追加できる。結果として、TX1は、Bobによってのみブロードキャストされる可能性がある。Aliceは、Tx1を有効にするために必要な追加インプットを追加したくない。何故なら、これは、彼女がシステムを騙さない場合には、彼女により多くの費用がかかるからである。
Aliceのお釣りは、Aliceのインプット(インプット0)の値から、Bobの支払い(アウトプット0)の値を差し引いたものでると定義される。図8のグラフが示すように、Bobの保険金(アウトプット2)は、最後のデータ部分が送信される前は、合計アウトプット(破線)が常にインプットより大きいことを保証する。 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.
より一般的には、Tx1の合計アウトプット値が合計インプット値より大きい、従って、Tx1のアウトプット0を請求するためにBob自身のインプットを追加するようBobに要求し、及びAliceがTx1をブロードキャストする動機をなくす状況を作り出すために、アウトプットの他の組合せが使用され得る。 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)を実施する例として、例えば以下のようにハッシュパズル及び条件付きオペコードを使用できる。
第1ラウンド-Bobの番:
Bobは、トランザクションTX1を受信すると、単にAliceへD1を送信する。Bobは、TX1内の支払いを請求し得るので、Aliceからの支援を有しないで、以下を行うことにより、これを安全に行うことに留意する。先ず、Bobは、TX1内のアウトプット2の値をカバーするためにアウトポイント(TxIDB,vout=0)を使用して、彼自身のインプットを追加することにより、TX1'を生成する。次に、Bobは、支払いを請求するために別のトランザクションTXpを生成する。
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.
Bobは、次に、両方のトランザクションをネットワーク106へブロードキャストしてよい。しかしながら、Bobはトランザクション内でD1を開示しなければならないので、Bobにとってこれは理想的な状況ではない。これは、チャネルの想起閉鎖であると考えられる。しかしながら、Aliceが正しい手順に従い支払いチャネルを閉じる場合(後述する)、Bobはこれを行う必要がない。
Bob may then broadcast both transactions to the
第2ラウンド-Aliceの番:AliceがD1を受信しコンテンツに満足すると、彼女は、次のデータパックのために以下のトランザクション内を構築する。このトランザクションは、D1を受信したことの肯定応答とも考えられる。
TX1及びTX2を比較すると、D1がD2に変更され、アウトプット0の値が500ユニットのデジタルアセットから1000ユニットへと増大されている。これらの2つの変更の結果として、他のアウトプットは異なる値を有する(Aliceが同じ未使用アウトポイントを使用しているとする)。更に、これらの変更はトランザクションの適応性のある部分には行われないので、AliceはTX2のための新しい署名を生成しなければならない。
Comparing TX1 and TX2 , D1 has been changed to D2 , and the value of
第2ラウンド-Bobの番:
BobはTX2を受信すると、単にAliceへD2を送信する。
When Bob receives TX 2 , he simply transmits D 2 to Alice.
Bobは、第1ラウンドと同じ方法でAliceの支援を有しないで支払いを請求できるので、前の同じように、これを安全に行う。Bobは、ここでも、TX2内のアウトプット2をカバーするために、ここでも(TxIDB,vout=0)から彼自身のインプットを追加し、TX2'内を生成する。Bobは、支払いを請求するために別のトランザクションTXpも生成する。
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を構築する。
After a few rounds, Alice constructs TX n to request the final data pack D n .
最終ラウンド-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を生成する。
Bobは、両方のトランザクションTXn’及びTXpを、支払いチャネル301を介してAliceへ直接送信する。Aliceは、TXn’及びTXpのインプットが彼女の期待通り実際に関連するかをチェックする。Aliceは、TXpに署名し、Dnを彼女の署名で置き換えて、TXp'を生成する。
AliceはBobにTXp'を送信する。Bobは、TXn’及びTXp'をネットワーク106へブロードキャストする。代替として、Aliceは、TXn’及び/又はTXp'をブロードキャストするか、又はAlice及びBobの代わりにブロードキャストするようそれらの一方又は両方を第三者へ送信し得る。Aliceは、いつでもチャネルを閉じることを選択できることに留意する。
Alice sends TX p ' to Bob. Bob broadcasts TX n ' and TX p ' to the
図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
シーケンスを再生するために、Tx1に応答して、Bobは、D2をAliceに送信する。AliceがBobに肯定応答するためにTx2を送信し、次に、BobはD3等を送信する。Tx2は、Tx1と同じであるが、D1がD2で置き換えられ、アウトプット0の量が増大されている。Tx3では、D2はD3で置き換えられ、ここでもアウトプット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
Bobは、基準(ii)に基づき、Tx1…Txiのうちのいずれか1つを一方的に請求できる。これを行うために、Bobは、それを適応してTxi’を生成する。適応は、Bobのデジタルアセットの一部のインプットを追加して、差分を構成し、次に、Txi.を使用するために自身のインプットの中にDiを含む別のトランザクションTxpを生成することを含む。Txpは、Bobに対して条件付きでロックされている。Bobは、彼のインプットを追加し、先のトランザクションTx1又はTx2、等のうちの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.
各Tx1,Tx2,Tx3…のインプットはTx0の同じ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
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.
少額から開始して、映画の終わりに向かってその都度、額が増大し、全部のトランザクションがTx0内の同じ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トランザクションTx1の異なる代替条件は、例えば図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
以下の例示的なシナリオを考える。選挙が差し迫っている。行政体(「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
以下の定義は、世論調査及び投票システムのために利用されてよい。
・登録(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つの可能な公開鍵があり、以下であってよい:
アンロック条件に関して、ロックスクリプトは、4つの異なるアンロック条件のうちのいずれか1つを満たすことによりアンロック可能なように、構成される。条件(i)及び(iii)は、両方とも、「労働党」に関連し、それぞれ世論調査及び投票を表す。条件(ii)及び(iv)は、両方とも、「保守党」に関連し、それぞれ世論調査及び投票を表す。条件は、以下のように完全に記述される。
しかしながら、有権者が条件を以下から切り換えたい場合:
アンロック条件は、特定のロックスクリプトをアンロックするために使用される。それにより、各アンロック条件は、ロックスクリプト内の別個のロック条件を満たす。問題のロックスクリプトは、ここでは「投票スクリプト(Vote script)」と呼ばれ、以下に示される。
世論調査及び投票手順は図10に示される。これは、t0における選挙の公示からt3における投票期間の終了までの完全な世論調査及び投票処理を示すシーケンス図である。 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は、後の時間t2において行われる投票のために、時間t0で投票者登録を開始する。投票者は、投票処理の部分として彼らのハッシングされたトークン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に調整される。各トランザクションは、後の時間t2にタイムロックされる。 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:t0<t<t2として定義される。投票者は、彼女の選択「労働党」を行い、及びアンロックスクリプト条件(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).
このトランザクションは、投票者、行政、又は第三者により公開できるが、t2までマイニングできない。 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は、何らかの時間t1で、彼女が彼女の「労働党」の世論調査選択肢を投票選択肢に変換したいと決定する。これは、世論調査トランザクションのアンロックスクリプトを適応して、投票トランザクションを生成することを含む。適応は、アンロック条件をスクリプト条件(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.
世論調査トランザクション及び後に生成される対応する投票トランザクションの両方は、両方のトランザクションに配置されたロックタイムt2のために、全ての時間t<t2において無効である。 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の行政体は、t2で、全部の有効な投票トランザクションをブロードキャストする。Bobの行政体は、時間t:t2<t<t3、で確定する任意の他の投票トランザクションをブロードキャストし続ける。ここで、t2は投票期間の開始を定義し、t3は投票期間の終了を定義する。 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
図11は、処理を実装するために使用できる幾つかの例示的なトランザクションを示す。上段のトランザクションTxslipは、選挙民の構成員に世論調査及び/又は投票を行うことにより資金を請求することを可能にする投票票トランザクションである。アウトプットは、投票期間がt2で開始した後にのみ請求できる。中段のトランザクションは、投票者が世論調査の部分としての選択肢を選択したことを意味する世論調査トランザクションTxPollである。ロックタイムがOP_CSV又はOP_CLTVを用いて実装され、Txslipが投票者へ送信されたのと同じ時間にネットワークへ送信された(ステップ2)例を仮定すると、このトランザクションは、自身のインプットの中で参照するTxslipのアウトプットに設定されたタイムロックにより、t2まで無効である。下段のトランザクションは、投票者が投票の部分としての選択肢を選択したことを意味する投票トランザクションTxvoteである。このトランザクションは、TxPollと同じであるが、スクリプトレベルの適応性を用いてアンロック条件を切り換えられている。このトランザクションは、同様に、t2まで無効である。 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バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップであって、それにより、前記ターゲットトランザクションを、前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録させる、ステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第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.
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第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.
前記ターゲットトランザクションの前記第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パーティの前記暗号署名を含む、請求項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~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.
前記第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.
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第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.
前記第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.
電気、ガス、又は水道を含む生活必需サービスの提供、又は、
不動産、車両、又は別の物理アイテムのレンタル、
のうちの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:
前記機能は、前記第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.
前記方法は、前記第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バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセス又は第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条件、
第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つ以上のメモリユニットを含むメモリと、
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 .
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つ以上のメモリユニットを含むメモリと、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.
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)
| 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)
| 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)
| 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 |
-
2019
- 2019-05-24 GB GB1907339.4A patent/GB2588072A/en not_active Withdrawn
-
2020
- 2020-04-22 WO PCT/IB2020/053815 patent/WO2020240297A1/en not_active Ceased
- 2020-04-22 EP EP20724200.9A patent/EP3973663A1/en active Pending
- 2020-04-22 CN CN202080038352.XA patent/CN114008969B/en active Active
- 2020-04-22 JP JP2021567834A patent/JP7646570B2/en active Active
- 2020-04-22 US US17/612,169 patent/US12047443B2/en active Active
-
2023
- 2023-09-20 US US18/370,782 patent/US12095859B2/en active Active
Patent Citations (4)
| 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)
| 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 |