JP2022548173A - マルチ基準ブロックチェーンプロトコル - Google Patents
マルチ基準ブロックチェーンプロトコル Download PDFInfo
- Publication number
- JP2022548173A JP2022548173A JP2022517257A JP2022517257A JP2022548173A JP 2022548173 A JP2022548173 A JP 2022548173A JP 2022517257 A JP2022517257 A JP 2022517257A JP 2022517257 A JP2022517257 A JP 2022517257A JP 2022548173 A JP2022548173 A JP 2022548173A
- Authority
- JP
- Japan
- Prior art keywords
- script
- transaction
- input
- party
- criteria
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013515 script Methods 0.000 claims abstract description 403
- 238000000034 method Methods 0.000 claims abstract description 124
- 230000015654 memory Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 27
- 238000005065 mining Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000000644 propagated effect Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000001228 spectrum Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000001902 propagating effect Effects 0.000 description 4
- 230000003595 spectral effect Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 101100129336 Dictyostelium discoideum malA gene Proteins 0.000 description 3
- 101100190460 Shigella flexneri pic gene Proteins 0.000 description 3
- 241001591005 Siga Species 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101150086151 hrdB gene Proteins 0.000 description 3
- 101150102864 rpoD gene Proteins 0.000 description 3
- 101150117326 sigA gene Proteins 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000003306 harvesting Methods 0.000 description 2
- 101150057107 sigB gene Proteins 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 206010065929 Cardiovascular insufficiency Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- 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/3255—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 group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/407—Cancellation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business processing using cryptography
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものである。前記方法は、前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントは各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントと、を含む。各基準コンポーネントは、前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる。前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる多義に、カウンタをインクリメントし、ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされることを要求する、よう構成される。
Description
本開示は、トランザクションをアンロックするためにm-of-n基準が満たされることを要求するブロックチェーンプロトコルを実施する方法及びトランザクションに関する。
ブロックチェーンとは、分散型データ構造の形式を指し、ブロックチェーンの複製のコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク内の複数のノードの各々において維持される。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。各トランザクションは、1つ以上のブロックに渡り得るシーケンスの中の先行するトランザクションを指してよい。トランザクションは、ネットワークに提供されて、「マイニング」として知られる処理により、新しいブロックに含まれることができる。「マイニング」は、複数のマイニングノードの各々が「proof-of-work」を実行するために競争する、つまりブロックに含まれることを待っている保留中のトランザクションのプールに基づき、暗号パズルを解くことを含む。
従来、ブロックチェーン内のトランザクションは、デジタルアセット、すなわち、価値のストアとして機能するデータを伝達するために使用される。しかし、ブロックチェーンの上に追加の機能を積み重ねるために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションのアウトプットに追加のユーザデータを格納することを可能にしてよい。現代のブロックチェーンは、単一トランザクション内に格納できる最大データ容量を増加させ、より複雑なデータを組み込むことを可能にしている。例えば、これは、ブロックチェーンに電子文書、又はオーディオ又はビデオデータでさえも格納するために使用されてもよく。
ネットワーク内の各ノードは、転送、マイニング、及び記憶のうちの任意の1、2、又は3つ全部の役割を有することができる。転送ノードは、ネットワークのノードを通じてトランザクションを伝播させる。マイニングノードは、トランザクションのマイニングを実行してブロックにする。記憶ノードは各々、ブロックチェーンのマイニングされたブロックのコピーを格納する。トランザクションをブロックチェーンに記録させるために、パーティは、該トランザクションを、伝播させるようにネットワークのノードのうちの1つへ送信する。トランザクションを受信するマイニングノードは、新しいブロックにトランザクションをマイニングするために競合する可能性がある。各ノードは、トランザクションが有効であるための1つ以上の条件を含む同じノードプロトコルに関するよう構成される。無効なトランザクションは、伝播されず、マイニングされてブロックにされることもない。トランザクションが検証され、それによってブロックチェーンに受け入れられたと仮定すると、追加のユーザデータは、従って、不変の公開レコードとしてP2Pネットワークの各ノードに格納されたままである。
幾つかのブロックチェーンプロトコルは、可能な受取人がトランザクションのアウトプットを使用できる高度な基準を生成する能力をパーティに与えるスクリプト言語を使用する。幾つかのスクリプト言語は、十分な数の有効なデジタル署名がトランザクションのインプットの中に存在するかどうかをチェックする関数(ときに、オペコードと呼ばれる)を含む。必要なm-of-n署名が利用可能な場合、アウトプットが使用できる。
有用であるが、m-of-n署名チェックは、必要な閾数のデジタル署名が満たされたかどうかのみに関するチェックであることに限定される。しかしながら、必ずしも署名ではない他の基準についての閾値が必要である状況があり得る。例として、可能な受取人は、トランザクションのアウトプットを使用するために、「少なくとも指定された数のハッシュプレイメージ」を生成するよう依頼されてよい。
本開示の1つの態様によると、コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記方法は、前記第1パーティにより実行され、
前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、
前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントであって、各基準コンポーネントが前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる、複数のカウンタスクリプトコンポーネントと、を含み、
前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされる必要がある、方法が提供される。
前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、
前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントであって、各基準コンポーネントが前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる、複数のカウンタスクリプトコンポーネントと、を含み、
前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされる必要がある、方法が提供される。
従って、バイナリ閾値プロトコル(binary threshold protocol (BTP))が提供され、ここで、閾値制約が任意の種類の基準に適用できる。アウトプットスクリプト条件は、デジタルアセットを使用しようとするトランザクションに含まれるインプットデータアイテムにより満たされ得る複数の基準を定義する。基準が満たされる度に、カウンタが(例えば、1だけ)インクリメントされる。カウンタが、インプットデータアイテムの全部が使い尽くされるときまでに、所定数(バイナリ閾値)に達した場合、第1スクリプト条件はアンロックされてよい。インプットスクリプトがプロトコルの任意の他の条件を満たす場合(例えば、トランザクションが有効なトランザクションである)、デジタルアセットの量は、第2パーティへ移転されるだろう。プロトコルは、閾値に達した場合に、デジタルアセットの量が移転(例えば、使用)できるが、閾値に達しない場合に、デジタルアセットの量が移転できない、という意味でバイナリである。
BTPは利点を提供するが、第2パーティへ移転されるデジタルアセットの量が、充足される基準の数に基づく場合(例えば、より多くの基準が満たされれば、より多くのデジタルアセットが移転される)場合に望ましい。例えば、意図された受取人が1-of-nプレイメージを提供できれば第1の量を、2-of-nプレイメージが提供される場合により大きな量を、3-of-nプレイメージが提供される場合に更に大きな量を移転することが望ましい。
本願明細書に開示される別の態様によると、コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1及び第2パーティは、各々、前記ブロックチェーンに関連付けられ、前記方法は、前記第1パーティにより実行され、
複数のアウトプットを含む第1トランザクションを生成するステップを含み、
各アウトプットは、前記デジタルアセットの各々の量をロックし、各々の第1スクリプト条件を含み、
各第1スクリプト条件は、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
各第1アウトプットスクリプト条件は、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも各々の所定数までインクリメントされる必要があり、
前記第1スクリプト条件のうちの1つ、一部、又は全部は、前記カウンタが異なる所定数までインクリメントされることを必要とする、方法が提供される。
複数のアウトプットを含む第1トランザクションを生成するステップを含み、
各アウトプットは、前記デジタルアセットの各々の量をロックし、各々の第1スクリプト条件を含み、
各第1スクリプト条件は、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
各第1アウトプットスクリプト条件は、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも各々の所定数までインクリメントされる必要があり、
前記第1スクリプト条件のうちの1つ、一部、又は全部は、前記カウンタが異なる所定数までインクリメントされることを必要とする、方法が提供される。
BTPと同様に、本方法では、スペクトル閾値プロトコル(spectrum threshold protocol (STP))が提供され、ここで、閾値制約が任意の種類の基準に適用できる。第1トランザクションは、複数のアウトプットを有し、各アウトプットは、アンロックされた場合にデジタルアセットの量を移転し得る。例えば、各アウトプットは、デジタルアセットの異なる量を移転してよく、第1アウトプットが第1の量を移転し、第2アウトプットが異なる(例えば、より大きな)量を移転する、等である。各アウトプットは第1アウトプットスクリプト条件を有し、第1アウトプットスクリプト条件は、デジタルアセットを使用しようとするトランザクションに含まれるインプットデータアイテムにより満たされ得る複数の基準を有する。基準が満たされる度に、カウンタが(例えば、1だけ)インクリメントされる。第1アウトプットスクリプト条件のうちの幾つかは、アンロックされるために、カウンタが異なる所定の数に達することを要求する。つまり、少なくとも1つのアウトプットスクリプトは、別のアウトプットスクリプトと比べて、より少ない数の基準が満たされることによりアンロックされる。これは、スペクトル閾値を生成する。例えば、より少ない数の基準を満たすことは、より少ない量のデジタルアセットをロックするアウトプットをアンロックしてよく、一方で、より多くの数の基準を満たすことは、より多くの量のデジタルアセットをロックするアウトプットをアンロックしてよい。
STPに従う第1トランザクションの各々の個別アウトプットは、BTPプロトコルに従う第1トランザクションのアウトプットと同様であり、STPアウトプットにより要求される所定の数(閾値)はアウトプットのうちの一部又は全部の間で変化する。
閾値プロトコル毎に、トランザクションのセットが利用され、受取人(第2パーティ)が、受取人が満たす基準の数に基づきデジタルアセットにアクセスできるようにする。STPは、デジタルアセット(報酬)の量が、受取人が満たすことのできる基準の数に比例する場合に、及び、報酬が満たされる基準の数に比例しない場合にも、適用可能である。例えば、特定の閾値を超えて、より多くの基準を持たすことが、取得可能な報酬を増大しないという、報酬に対する上限が存在してよい。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。
ブロックチェーンに記録されるトランザクションの幾つかの例を概略的に示している。
ブロックチェーンを実装するための別のシステムの概略ブロック図である。
アウトプットに基づくモデルのノードプロトコル;トランザクションを処理するノードソフトウェアのピースの概略ブロック図である。
図1の簡易バージョンであり、一般的な基準閾値ブロックチェーントランザクションを実装するシステムを概略的に表す。
Spectrum Payトランザクションのセットの概略図である。
Spectrum Payトランザクションのアウトプットの概略図である。
取り消し(Cancel)トランザクションのセットの概略図である。
返金(Refund)トランザクションのセットの概略図である。
集合(Collect)トランザクションのセットの概略図である。
時間差(time-staggered)トランザクションの例示的なシーケンスを概略的に示す。
一般的な基準閾値ブロックチェーンプロトコルを実装するために、異なるパーティにより行われる例示的なステップシーケンスを示すタイムラインを概略的に示す。
OP_CHECKMULTISIGブロックチェーンプロトコルを用いてm-of-n署名をチェックする実装の概略表現である。
一般的な基準閾値ブロックチェーンプロトコルを用いてm-of-n署名をチェックする実装の概略表現である。
<例示的なシステムの概要>
図1は、ブロックチェーン150を一般的に実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバレイネットワーク106を形成するように配置された複数のノード104を含む。各ノード104は、異なるピアに属する異なるノード104を有するピアのコンピュータ装置を含む。各ノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を含む。各ノードはまた、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
図1は、ブロックチェーン150を一般的に実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバレイネットワーク106を形成するように配置された複数のノード104を含む。各ノード104は、異なるピアに属する異なるノード104を有するピアのコンピュータ装置を含む。各ノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を含む。各ノードはまた、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
ブロックチェーン150は、データ151のブロックのチェーンを含み、ブロックチェーン150の各々のコピーは、P2Pネットワーク160内の複数のノードの各々に維持される。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、ここでは、この文脈におけるトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、暗号的にロックされているユーザ103に属するデジタルアセットの量を表す量を指定する(ロックを解除し、それによって償還又は使用するために、そのユーザの署名を必要とする)。各インプットは、先行するトランザクション152のアウトプットを指し示し、それによって、トランザクションをリンクする。
ノード104の少なくとも一部は、トランザクション152を転送し、それによって伝播する転送ノード104Fの役割を引き受ける。ノード104の少なくとも幾つかは、ブロック151をマイニングするマイナー104Mの役割を担う。ノード104の少なくとも幾つかは、記憶ノード104S(「フルコピー(full-copy)」ノードとも呼ばれる)の役割を引き受け、各ノードは、各々のメモリに同じブロックチェーン150の各々のコピーを格納する。各マイナーノード104Mはまた、ブロック151へのマイニングを待つトランザクション152のプール154を維持する。所与のノード104は、転送ノード104、マイナー104M、記憶ノード104S、又はこれらの2つもしくはすべての任意の組み合わせであり得る。
所与の現在のトランザクション152jにおいて、インプット(又はその各々)は、トランザクションのシーケンスの中の先行トランザクション152iのアウトプットを参照するポインタを含み、このアウトプットが現在のトランザクション152jにおいて償還されるか又は「使用される(spent)」ことを指定する。一般に、先行するトランザクションは、プール154又は任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、必ずしも、現在のトランザクション152jが生成された又はネットワーク106へ送信されたときに存在する必要はないが、先行するトランザクション152iは、現在のトランザクションが有効であるために存在し検証されている必要がある。従って、本願明細書で「先行する」は、ポインタによりリンクされた論理的シーケンスの中で先行するものを表し、必ずしも時系列の中での生成又は送信の時間を表さない。従って、それは、必ずしも、トランザクション152i,152jが順不同で生成され又は送信されることを排除しない(以下の親のない(orphan)トランザクションに関する議論を参照する)。先行するトランザクション152iは、等しく、祖先(antecedent)又は先行(predecessor)トランザクションと呼ばれ得る。
現在のトランザクション152jのインプットは、先行するトランザクション152iのアウトプットがロックされているユーザ103aの署名も含む。次に、現在のトランザクション152jのアウトプットは、新しいユーザ103bに暗号的にロックすることができる。従って、現在のトランザクション152jは、先行するトランザクション152iのインプットに定義された量を、現在のトランザクション152jのアウトプットに定義された新しいユーザ103bに移転することができる。ある場合には、トランザクション152は、複数のユーザ間でインプット量を分割するために複数のアウトプットを有してもよい(そのうちの1つは、お釣りを与えるために、元のユーザ103aであってもよい)。場合によっては、トランザクションは、複数のインプットを有し、1つ以上の先行トランザクションの複数のアウトプットからの量(金額)を集め、現在のトランザクションの1つ以上のアウトプットに再配分することもできる。
上記は「アウトプットベースの」トランザクションプロトコルと呼ばれることがあり、時には「未使用のトランザクションアウトプット(unspent transaction output (UTXO))タイプのプロトコル」(アウトプットはUTXOと呼ばれる)とも呼ばれる。ユーザの合計残高は、ブロックチェーンに格納されている1つの数値で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152に分散されている該ユーザの全てのUTXOの値を照合するために、特別な「ウォレット」アプリケーション105を必要とする。
アカウントベースのトランザクションモデルの一部として、別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンと分離してマイナーによって保管され、絶えず更新される。このようなシステムでは、トランザクションは、アカウントの連続したトランザクション記録(いわゆる「ポジション」)を用いて発注される。この値は、送信者により彼らの暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。さらに、任意的なデータフィールドもトランザクションに署名することができる。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを遡ってポイントしてよい。
どちらのタイプのトランザクションプロトコルでも、ユーザ103が新しいトランザクション152jを実行したい場合、ユーザは、自分のコンピュータ端末102からP2Pネットワーク106のノードの1つ104(現在は、通常、サーバ又はデータセンタであるが、原則として、他のユーザ端末でもよい)に新しいトランザクションを送信する。このノード104は、各ノード104に適用されるノードプロトコルに従って、トランザクションが有効であるかどうかをチェックする。ノードプロトコルの詳細は、問題のブロックチェーン150で使用されているトランザクションプロトコルのタイプに対応し、全体のトランザクションモデルを一緒に形成する。ノードプロトコルは、典型的には、ノード104に、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付けされたシーケンスの中の前のトランザクション152iに依存する、期待される署名と一致することをチェックすることを要求する。アウトプットベースの場合、これは、新しいトランザクション152jのインプットに含まれるユーザの暗号署名が、新しいトランザクションが消費する先行トランザクション152iのアウトプットに定義された条件と一致することをチェックすることを含み得、この条件は、典型的には、新しいトランザクション152jのインプットにおける暗号署名が、新しいトランザクションのインプットがポイントする先行トランザクション152iのアウトプットをアンロックすることを少なくともチェックすることを含む。幾つかのトランザクションプロトコルでは、条件は、少なくとも部分的に、インプット及び/又はアウトプットに含まれるカスタムスクリプトによって定義されてもよい。あるいは、単にノードプロトコルだけで固定することもできるし、あるいは、これらの組み合わせによることもある。いずれにせよ、新しいトランザクション152jが有効であれば、現在のノードは新しいトランザクションをP2Pネットワーク106内のノード104の1つ以上の他のノードに転送する。これらのノード104の少なくとも幾つかは、同じノードプロトコルに従って同じテストを適用し、新しいトランザクション152jを1つ以上のさらなるノード104に転送するなど、転送ノード104Fとしても機能する。このようにして、新しいトランザクションは、ノード104のネットワーク全体に伝播される。
アウトプットベースのモデルでは、与えられたアウトプット(例えば、UTXO)が使用されるかどうかの定義は、ノードプロトコルに従って別の今後の(onward)トランザクション152jのインプットによって既に有効に使用されているかどうかである。トランザクションが有効であるための別の条件は、それが消費又は償還を試みる先行するトランザクション152iのアウトプットが、別の有効なトランザクションによって未だ消費/償還されていないことである。ここでも、有効でない場合、トランザクション152jは、ブロックチェーンに伝播又は記録されない。これは、支払人が同じトランザクションのアウトプットを複数回消費しようとする二重支出を防ぐ。一方、アカウントベースのモデルは、アカウントバランスを維持することによって、二重支出を防ぐ。この場合も、トランザクションの順序が定義されているため、口座残高は、一度に単一の定義された状態を有する。
検証に加えて、ノード104Mのうちの少なくとも幾つかは、「proof of work」に支えられているマイニングと呼ばれるプロセスで、トランザクションのブロックを最初に作成するために競合する。マイニングノード104Mでは、まだブロックに現れていない有効なトランザクションのプールに新しいトランザクションが追加される。そして、マイナーは、暗号パズルを解決しようと試みることにより、トランザクションのプール154からトランザクション152の新しい有効なブロック151を組み立てるために競争する。これは、典型的には、ノンスがトランザクションのプール154と連結され、ハッシュされるときに、ハッシュのアウトプットが所定の条件を満たすような「ノンス」値を探すことを含む。例えば、所定の条件は、ハッシュのアウトプットが、所定の数の先頭ゼロを有することであってもよい。ハッシュ関数の特性は、インプットに関して予測不可能なアウトプットを持つことである。従って、この探索は、ブルートフォースによってのみ実行することができ、従って、パズルを解決しようとしている各ノード104Mにおいて、相当量の処理リソースを消費する。
パズルを解く最初のマイナーノード104Mは、これをネットワーク106に通知し、その解を証明として提供する。この解は、ネットワーク内の他のノード104によって簡単にチェックすることができる(ハッシュが対する解が与えられれば、ハッシュのアウトプットが条件を満たすことを確認することは簡単である)。勝者がパズルを解いたトランザクションのプール154は、各ノードで勝者が発表した解をチェックしたことに基づいて、記憶ノード104Sとして機能するノード104のうちの少なくとも幾つかによってブロックチェーン150の新しいブロック151として記録される。また、新しいブロック151nにはブロックポインタ155が割り当てられ、チェーン内で前に作成されたブロック151n-1を指すようになっている。proof-of-workは、新しいブロックを151作成するのに多大な労力を要し、二重の支出を含むブロックは他のノード104によって拒否される可能性が高く、従ってマイニングノード104Mが二重支払いを彼らのブロックに含まないようにする動機が働くので、二重の支出のリスクを減じるのを助ける。一旦生成されると、ブロック151は、同じプロトコルに従ってP2Pネットワーク106内の記憶ノード104Sの各々で認識され、維持されるので、修正することができない。ブロックポインタ155はまた、ブロック151に逐次的な順序を課す。トランザクション152は、P2Pネットワーク106内の各記憶ノード104Sで順序付けられたブロックに記録されるので、これはトランザクションの不変の公開台帳を提供する。
パズルを解決するために常に競争している異なるマイナー104Mは、いつ解を探し始めたかによって、いつでもマイニングされていないトランザクションプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、現在のマイニングされていないトランザクションのプール154が更新される。そして、マイナーは、新たに定義された未決のプールからブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2人のマイナー104Mが互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾したビューが伝播する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。
ほとんどのブロックチェーンでは、勝ったマイナー104Mは、何も無いものから新しい量のデジタルアセットを生み出す特別な種類の新しいトランザクションによって自動的に報酬を受けている(通常のトランザクションでは、あるユーザから別のユーザにデジタルアセットの量を移転する)。したがって、勝ったノードは、ある量のデジタルアセットを「マイニング」したと言える。この特殊なタイプのトランザクションは「生成(generation)」トランザクションと呼ばれることもある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがproof-of-work競争に参加する動機を与える。通常の(非生成)トランザクション152は、そのアウトプットの1つに追加のトランザクション手数料を指定し、そのトランザクションが含まれたブロック151nを生成した勝ったマイナー104Mにさらに報酬を与えることが多い。
マイニングに含まれる計算リソースのために、典型的には、少なくともマイナーノード104Mの各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。各転送ノード104M及び/又は記憶ノード104Sは、サーバ又はデータセンタの形態をとることもできる。しかしながら、原則として、任意の所与のノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末のグループを含むことができる。
各ノード104のメモリは、各々の1つ以上の役割を実行し、ノードプロトコルに従ってトランザクション152を処理するために、ノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ノード104に属するいずれの動作も、各々のコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本願明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。
また、ネットワーク101には、消費者ユーザの役割を果たす複数のパーティ103の各々のコンピュータ装置102も接続されている。これらは、トランザクションにおける支払人及び被支払人の役割を果たすが、他のパーティの代わりにトランザクションをマイニングし又は伝播することに必ずしも参加しない。それらは必ずしもマイニングプロトコルを実行するわけではない。2つのパーティ103及び各々の機器102は、説明のために示されており、第1パーティ103a及びその各々のコンピュータ機器102a、並びに第2パーティ103b及びその各々のコンピュータ機器102bである。より多くのこのようなパーティ103及びそれらの各々のコンピュータ装置102がシステムに存在し、参加することができるが、便宜上、それらは図示されていないことが理解されよう。各パーティ103は、個人又は組織であってもよい。純粋に例示として、第1パーティ103aは、本願明細書においてAliceと称され、第2パーティ103bは、Bobと称されるが、これは限定的なものではなく、本願明細書においてAlice又はBobという言及は、各々「第1パーティ」及び「第2パーティ」と置き換えることができることは理解されるであろう。
各パーティ103のコンピュータ機器102は、1つ以上のプロセッサ、例えば、1つ以上のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はFPGAを備える各々の処理装置を備える。各パーティ103のコンピュータ機器102は、さらに、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。このメモリは、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。各パーティ103のコンピュータ機器102上のメモリは、処理装置上で動作するように配置された少なくとも1つのクライアントアプリケーション105の各々のインスタンスを含むソフトウェアを記憶する。本明細書で与えられたパーティ103に帰属されたいずれのアクションも、各々のコンピュータ装置102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。各パーティ103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えばデスクトップ又はラップトップコンピュータ、タブレット、スマートフォン、又はスマートウォッチのようなウェアラブルデバイスを備えている。所与のパーティ103のコンピュータ装置102は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースのような、1つ以上の他のネットワーク化されたリソースを含んでもよい。
クライアントアプリケーション又はソフトウェア105は、最初に、1つ以上の適切なコンピュータ読み取り可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、各々のユーザパーティ103が、ノード104のネットワーク全体にわたって伝播され、それによってブロックチェーン150に含まれるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの金額を各々のパーティに報告することである。アウトプットベースのシステムでは、この第2の機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。
各コンピュータ機器102上のクライアントアプリケーション105のインスタンスは、P2Pネットワーク106の転送ノード104Fの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能は、トランザクション152をネットワーク106に送信することができる。クライアント105は、また、記憶ノード104のうちの1つ、一部、又は全部にコンタクトして、各々のパーティ103が受領者である任意のトランザクションについてブロックチェーン150に問い合わせることができる(又は、実施形態では、ブロックチェーン150は、部分的にその公開視認性を通じてトランザクションの信頼を提供する公開的設備であるため、実際には、ブロックチェーン150内の他のパーティのトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を形成し、送信するように構成される。各ノード104は、ノードプロトコルに従ってトランザクション152を検証するように構成されたソフトウェアを実行し、転送ノード104Fの場合は、ネットワーク106全体にトランザクション152を伝搬させるためにトランザクション152を転送する。トランザクションプロトコルとノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に所与のトランザクションモデルを実装する。同じトランザクションプロトコルが、ブロックチェーン150内のすべてのトランザクション152に使用される(ただし、トランザクションプロトコルは、トランザクションの異なるサブタイプを許可してもよい)。同じノードプロトコルは、ネットワーク106内のすべてのノード104によって使用される(ただし、多くのノードは、そのサブタイプに対して定義されたルールに従って異なるトランザクションのサブタイプを異なるように処理し、また、異なるノードは異なる役割を引き受け、従って、プロトコルの異なる対応する側面を実装することができる)。
上述したように、ブロックチェーン150はブロック151のチェーンを含み、各ブロック151は、上述したように、proof-of-workプロセスによって作成された1つ又は複数のトランザクション152のセットを含む。各ブロック151は、また、ブロック151への逐次的順序を規定するように、チェーン内の先に生成されたブロック151に戻るブロックポインタ155を含む。ブロックチェーン150はまた、proof-of-workプロセスによって新しいブロックに含まれることを待つ有効なトランザクション154のプールを含む。各トランザクション152(生成トランザクション以外)は、トランザクションのシーケンスに順序を定義するために、前のトランザクションへのポインタを含む(注:トランザクション152のシーケンスは、分岐することが許される)。ブロック151のチェーンは、チェーンの最初のブロックであったジェネシスブロック(genesis block (Gb))153にまで戻る。チェーン150の初期に1つ以上のオリジナルトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示した。
所与のパーティ103、例えばAliceがブロックチェーン150に含まれる新たなトランザクション152jを送信したいと望む場合、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新たなトランザクションを作成する(formulate)。次に、クライアントアプリケーション105からトランザクション152を、彼女が接続されている1つ以上の転送ノード104Fの1つに送信する。例えば、これは、Aliceのコンピュータ102に最も近いか又は最も良好に接続されている転送ノード104Fであってもよい。任意の所与のノード104が新しいトランザクション152jを受信すると、ノードプロトコル及びその各々の役割に従って、それを処理する。これは、最初に、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たしているかどうかをチェックすることを含み、その例については、簡単に詳述する。幾つかのトランザクションプロトコルでは、検証のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であってよい。或いは、条件は単にノードプロトコルの組み込み機能であってもよく、或いはスクリプトとノードプロトコルの組み合わせによって定義されてもよい。
新たに受信されたトランザクション152jが、有効であると見なされるテストに合格したという条件で(すなわち、「有効である」という条件で)、トランザクション152jを受信した任意の記憶ノード104Sは、そのノード104Sに維持されているブロックチェーン150のコピー内のプール154に、新たに有効とされたトランザクション152を追加する。さらに、トランザクション152jを受信する任意の転送ノード104Fは、検証済みトランザクション152をP2Pネットワーク106内の1つ以上の他のノード104に伝播する。各転送ノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、P2Pネットワーク106全体に間もなく伝播されることを意味する。
ひとたび1つ以上の記憶ノード104で維持されるブロックチェーン150のコピー内のプール154に入ると、マイナーノード104Mは、新しいトランザクション152を含むプール154の最新バージョンのproof-of-workパズルを解決するために競争を開始する(他のマイナー104Mは、依然として、プール154の古いビューに基づいてパズルを解決しようとしているが、そこに到達した者は誰でも、最初に、次の新しいブロック151が終了し、新しいプール154が開始する場所を定義し、最終的には、誰かが、Aliceのトランザクション152jを含むプール154の一部のパズルを解決する)。一旦、新しいトランザクション152jを含むプール154についてproof-of-workが行われると、それはブロックチェーン150内のブロック151のうちの1つの一部となる。各トランザクション152は、以前のトランザクションへのポインタから構成されるので、トランザクションの順序もまた、不変的に記録される。
図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つ以上のインプット202及び1つ以上のアウトプット203を含むデータ構造を含む。各アウトプット203は、未使用トランザクションアウトプット(UTXO)を含んでもよく、これは、別の新しいトランザクションのインプット202のソースとして使用することができる(UTXOが未だ償還されていない場合)。UTXOは、デジタルアセット(価値のストア)の量を指定する。それは、情報の中でも特にその元となったトランザクションのトランザクションIDを含む。トランザクションデータ構造はまた、ヘッダ201も含んでよく、ヘッダ201は、インプットフィールド202及びアウトプットフィールド203のサイズの指示子を含んでもよいヘッダ201を含んでよい。ヘッダ201は、トランザクションのIDも含んでもよい。実施形態において、トランザクションIDは、トランザクションデータのハッシュ(トランザクションID自体を除く)であり、マイナー104Mに提出された未加工トランザクション152のヘッダ201に格納される。
Alice103aは、問題のデジタルアセットの量をBob103bに転送するトランザクション152jを作成したいと考えているとする。図2において、Aliceの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、Aliceにロックされているデジタルアセットの量を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、図2において「Tx0」とラベル付けされている。Tx0とTx1は、単なる任意のラベルである。これらは、必ずしも、Tx0がブロックチェーン151の最初のトランザクションであること、又は、Tx1がプール154の直ぐ次のトランザクションであることを意味しない。Tx1は、まだAliceへのロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションのいずれかを指し示すことができる。
先行するトランザクションTx0は、Aliceがその新しいトランザクションTx1を作成するとき、又は少なくとも彼女がそれをネットワーク106に送信するときまでに、既に検証され、ブロックチェーン150に含まれていてもよい。それは、その時点で既にブロック151のうちの1つに含まれていてもよく、あるいは、プール154内でまだ待機していてもよく、その場合、新しいブロック151にすぐに含まれることになる。あるいは、Tx0及びTx1が生成されネットワーク102に送信されることができ、あるいは、ノードプロトコルが「孤児(orphan)」トランザクションのバッファリングを許容する場合にはTx1の後にTx0が送信されることもできる。ここでトランザクションのシーケンスの文脈で使用される「先行する」及び「後の」という用語は、トランザクション内で指定されたトランザクションポインタ(どのトランザクションがどの他のトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、「先行する」及び「相続する」又は「祖先」及び「子孫」、「親」及び「子」、等により、等しく置き換えられ得る。これは、必ずしも、それらが作成され、ネットワーク106に送られ、又は任意の所与のノード104に到達する順序を意味しない。それにもかかわらず、先行するトランザクション(祖先トランザクション又は「親」)を指す後続のトランザクション(子孫トランザクション又は「子」)は、親トランザクションが検証されない限り、検証されない。親の前にノード104に到着した子は孤児とみなされる。それは、ノードプロトコル及び/又はマイナーの行動に応じて、親を待つために特定の時間、破棄又はバッファリングされることがある。
先行するトランザクションTx0の1つ以上のアウトプット203のうちの1つは、本願明細書でUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの量を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。
ロックスクリプト(別名scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有の言語で書かれたコードの一部である。そのような言語の特定の例は、「スクリプト」(Script,Sは大文字)と呼ばれる。ロックスクリプトは、トランザクションアウトプット203を消費するために必要な情報、例えば、Aliceの署名の必要条件を指定する。トランザクションのアウトプットには、アンロックスクリプトが現れる。アンロックスクリプト(別名:scriptSig)は、ロックスクリプトの基準を満たすために必要な情報を提供するドメイン固有の言語で書かれたコードの一部である。例えば、Bobの署名を含んでもよい。アンロックスクリプトは、トランザクションのインプット202に現れる。
図示の例では、Tx0のアウトプット203のUTXO0は、ロックスクリプト[ChecksigPA]を含み、これは、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[ChecksigPA]は、Aliceの公開鍵と秘密鍵のペアからの公開鍵PAを含む。Tx1のインプット202は、Tx1を指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx0全体のハッシュであるTxID0による)を含む。Tx1のインプット202は、Tx0の任意の他の可能なアウトプットの中でそれを識別するために、Tx0内のUTXO0を識別するインデックスを含む。Tx1のインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。
ここで、「||」は連結を表し、「<...>」はスタックにデータを配置することを意味し、「[...]」はアンロックスクリプトに含まれる機能である(本例では、スタックベースの言語)。同等に、スクリプトは、スクリプトを連結するのではなく共通のスタックにより1つずつ実行されてよい。いずれの方法でも、一緒に実行する場合、スクリプトは、Tx0のアウトプット内のロックスクリプトに含まれるAliceの公開鍵PAを使用して、Tx1のインプット内のロックスクリプトが、データの期待部分に署名するAliceの署名を含むことを認証する。また、データの期待部分(「メッセージ」)も、この認証を実行するためにTx0に含まれる必要がある。実施形態において、署名されたデータは、Tx0の全体を含む(従って、別個の要素は、データの署名された部分がすでに本質的に存在するので、データの署名された部分の指定にクリアに含まれる必要がある)。
公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、Aliceが彼女の秘密鍵によりメッセージを暗号化することによってメッセージに署名した場合、Aliceの公開鍵とそのメッセージが明らか(暗号化されていないメッセージ)ならば、ノード104のような別のエンティティは、そのメッセージの暗号化されたバージョンがAliceによって署名されていなければならないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、署名としてメッセージの平文バージョンにこれをタグ付けすることによって、公開鍵の所有者が署名を認証することを可能にする。
Tx1内のアンロックスクリプトが、Tx0のロックスクリプトで指定された1つ以上の条件を満たす場合(示される例では、Aliceの署名がTx1内で提供され、認証されている場合)、ノード104は、Tx1が有効であるとみなす。それがマイニングノード104Mである場合、これは、proof-of-workを待つトランザクションのプール154にそれを追加することを意味する。それが転送ノード104Fである場合、それはトランザクションTx1をネットワーク106内の1つ以上の他のノード104に転送し、それによって、それがネットワーク全体に伝搬されることになる。一旦、Tx1が検証され、ブロックチェーン150に含まれると、これは、Tx0からのUTXO0を消費したものとして定義する。Tx1は、未使用トランザクションアウトプット203を使用する場合にのみ有効であることに留意されたい。別のトランザクション152によって既に消費されたアウトプットを消費しようとする場合、Tx1は、たとえ他のすべての条件が満たされていても無効となる。従って、ノード104は、先行するトランザクションTx0において参照されたUTXOが既に使用されているかどうか(既に別の有効なトランザクションへの有効なインプットを形成しているかどうか)もチェックする必要がある。これが、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である理由の1つである。実際には、所与のノード104は、トランザクション152が消費されたUTXO203をマークする別個のデータベースを維持することができるが、最終的には、UTXOが消費されたかどうかを定義するのは、ブロックチェーン150内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。
UTXOベースのトランザクションモデルでは、所定のUTXOを全体として使用する必要があることに注意する。UTXOで定義されている量のうち、別の分量が消費されている一方で、分量を「残しておく」ことはできない。ただし、UTXOからの量は、次のトランザクションの複数のアウトプットに分割できる。例えば、Tx0のUTXO0で定義された量は、Tx1の複数のUTXOに分割できる。従って、AliceがBobにUTXO0で定義された量の全てを与えることを望まない場合、彼女は残りの量を使って、Tx1の第2のアウトプットの中で自分自身にお釣りを与えるか、又は別のパーティに支払うことができる。
実際には、Aliceは通常、勝ったマイナーのための手数料も含める必要がある。なぜなら、今日では、生成トランザクションの報酬だけでは、マイニングを動機付けるには通常十分ではないからである。Aliceがマイナーのための手数料を含まない場合、Tx0はマイナーのノード104Mによって拒否される可能性が高く、したがって、技術的には有効であるが、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナーのプロトコルは、マイナーが望まない場合には、マイナー104Mにトランザクション152を受け入れるよう強制しない)。一部のプロトコルでは、マイニング手数料は、独自の別個のアウトプット203を必要としない(すなわち、別個のUTXOを必要としない)。その代わりに、インプット202によって示される総量と所与のトランザクション152のアウトプット203で指定される総量との間の差は、勝ったマイナー104に自動的に与えられる。例えば、UTXO0へのポインタがTx1への唯一のインプットであり、Tx1は1つのアウトプットUTXO1しか持っていないとする。UTXO0で指定されたデジタルアセットの量がUTXO1で指定された量より多い場合、その差は自動的に勝ったマイナー104Mへ行く。しかし、代替的又は追加的に、必ずしも、トランザクション152のUTXO203のうちの独自のものにおいて、マイナー手数料を明示的に指定できることは除外されない。
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎であることに留意する。従って、このようなトランザクションは、伝播されず、マイニングされてブロック151にされることもない。
Alice及びBobのデジタルアセットは、ブロックチェーン150内の任意のトランザクション152の中で彼らにロックされた未使用UTXOで構成されている。従って、典型的には、所与のパーティ103のアセットは、ブロックチェーン150を通して、様々なトランザクション152のUTXO全体に分散される。ブロックチェーン150内のどこにも、所与のパーティ103の総残高を定義する1つの数値は記憶されていない。各パーティへのロックされた、別の将来の(onward)トランザクションに未だ消費されていない全ての様々なUTXOの値をまとめることは、クライアントアプリケーション105におけるウォレット機能の役割である。これは、記憶ノード104Sのいずれかに記憶されたブロックチェーン150のコピーを、例えば、各パーティのコンピュータ機器102に最も近いか、又は最も良好に接続されている記憶ノード104Sに問い合わせることによって行うことができる。
スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語ではない)ことに注意する。例えば、[Checksig PA]を[Checksig PA]=OP_DUPOP_HASH160<H(Pa)>OP_EQUALVERIFYOP_CHECKSIGを意味するように記述し得る。「OP_....」は、スクリプト言語の特定のオペコードを表す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つのインプット(署名と公開鍵)を取り込み、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm (ECDSA))を使用して署名の妥当性を検証するスクリプトオペコードである。ランタイムでは、署名(「sig」)の発生はスクリプトから削除されるが、ハッシュパズルなどの追加要件は、「sig」インプットによって検証されるトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを格納することができ、それによってメタデータをブロックチェーン150に不変に記録することができるトランザクションの使用不可能アウトプットを生成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望ましいドキュメントを含むことができる。
署名PAは、デジタル署名である。実施形態において、これは楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータに署名する。実施形態では、所与のトランザクションについて、署名はトランザクションインプットの一部、及びトランザクションアウトプットの全部又は一部に署名する。符号付きアウトプットの特定の部分はSIGHASHフラグに依存する。SIGHASHフラグは、署名の最後に含まれる4バイトのコードであり、どのアウトプットが署名されるかを選択する(従って、署名の時点で固定される)。
ロックスクリプトは、各々のトランザクションがロックされているパーティの公開鍵を含んでいることを表す「scriptPubKey」と呼ばれることがある。アンロックスクリプトは、対応する署名を提供することを表す「scriptSig」と呼ばれることがある。しかし、より一般的には、UTXOが償還される条件が署名を認証することを含むことは、ブロックチェーン150の全てのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語は、任意の1つ以上の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」及び「アンロックスクリプト」が好ましい。
<任意的なサイドチャネル>
図3は、ブロックチェーン150を実装するための更なるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、各々、追加通信機能を含む。すなわち、Alice103aは、(いずれかのパーティ又は第三者の勧誘で)Bob103bと別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークとは別にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(未だ)発行されることなく、又はチェーン150上でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。これに代えて、又はこれに加えて、サイドチャネル301は、鍵、交渉された金額又は条件、データ内容等の他のトランザクション関連データを交換するために使用することができる。
図3は、ブロックチェーン150を実装するための更なるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、各々、追加通信機能を含む。すなわち、Alice103aは、(いずれかのパーティ又は第三者の勧誘で)Bob103bと別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークとは別にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(未だ)発行されることなく、又はチェーン150上でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。これに代えて、又はこれに加えて、サイドチャネル301は、鍵、交渉された金額又は条件、データ内容等の他のトランザクション関連データを交換するために使用することができる。
サイドチャネル301は、P2Pオーバレイネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置1021、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりP2Pオーバレイネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると言われる場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンク又は同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
<ノードソフトウェア>
図4は、UTXO又はアウトプットに基づくモデルの例における、P2Pネットワーク106の各ノード104で実行され得るノードソフトウェア400の例を示す。ノードソフトウェア400は、プロトコルエンジン401、スクリプトエンジン402、スタック403、アプリケーションレベルの決定エンジン404、及び1つ以上のブロックチェーン関連機能モジュールのセット405を含む。任意の所与のノード104で、これらは、(ノードの1つ以上の役割に依存して)マイニングモジュール405M、転送モジュール405F、及び格納モジュール405S、のうちの任意の1、2、又は3個全部を含んでよい。プロトコルエンジン401は、トランザクション152の異なるフィールドを認識し、それらをノードプロトコルに従い処理するよう構成される。トランザクション152m(Txm)が受信され、別の先行するトランザクション152m-1(Txm-1)のアウトプット(例えばUTXO)をポイントするインプットを有するとき、プロトコルエンジン401は、Txm内のアンロックスクリプトを識別し、それをスクリプトエンジン402に渡す。プロトコルエンジン401は、更に、Txmのインプットの中のポインタに基づき、Txm-1を識別し検索する。それは、Txm-1が未だブロックチェーン150上にない場合、各々のノード自身の保留中トランザクションのプール154から、又はTxm-1が既にブロックチェーン150上にある場合、各々のノード若しくは別のノード104に格納されたブロックチェーン150内のブロック151のコピーから、Txm-1を検索してよい。いずれの方法も、スクリプトエンジン401は、Txm-1のポイントされるアウトプットの中のロックスクリプトを識別し、これをスクリプトエンジン402に渡す。
図4は、UTXO又はアウトプットに基づくモデルの例における、P2Pネットワーク106の各ノード104で実行され得るノードソフトウェア400の例を示す。ノードソフトウェア400は、プロトコルエンジン401、スクリプトエンジン402、スタック403、アプリケーションレベルの決定エンジン404、及び1つ以上のブロックチェーン関連機能モジュールのセット405を含む。任意の所与のノード104で、これらは、(ノードの1つ以上の役割に依存して)マイニングモジュール405M、転送モジュール405F、及び格納モジュール405S、のうちの任意の1、2、又は3個全部を含んでよい。プロトコルエンジン401は、トランザクション152の異なるフィールドを認識し、それらをノードプロトコルに従い処理するよう構成される。トランザクション152m(Txm)が受信され、別の先行するトランザクション152m-1(Txm-1)のアウトプット(例えばUTXO)をポイントするインプットを有するとき、プロトコルエンジン401は、Txm内のアンロックスクリプトを識別し、それをスクリプトエンジン402に渡す。プロトコルエンジン401は、更に、Txmのインプットの中のポインタに基づき、Txm-1を識別し検索する。それは、Txm-1が未だブロックチェーン150上にない場合、各々のノード自身の保留中トランザクションのプール154から、又はTxm-1が既にブロックチェーン150上にある場合、各々のノード若しくは別のノード104に格納されたブロックチェーン150内のブロック151のコピーから、Txm-1を検索してよい。いずれの方法も、スクリプトエンジン401は、Txm-1のポイントされるアウトプットの中のロックスクリプトを識別し、これをスクリプトエンジン402に渡す。
スクリプトエンジン402は、従って、Txm-1のロックスクリプト、及びTxmの対応するインプットからのアンロックスクリプトを有する。例えば、Tx1及びTx2が図4に示されるが、Tx0及びTx1等のようなトランザクションの任意のペアについても同様である。スクリプトエンジン402は、前述のように2つのスクリプトを一緒に実行し、これらは、使用されているスタックに基づくスクリプト言語(例えばScript)に従い、スタック403にデータを置くことと、データを検索することとを含む。
スクリプトを一緒に実行することにより、スクリプトエンジン402は、アンロックスクリプトがロックスクリプトの中で定義された1つ以上の基準を満たすかどうか、つまり、それがロックスクリプトが含まれるアウトプットを「アンロック」するか否かを決定する。スクリプトエンジン402は、この決定の結果をプロトコルエンジン401に返す。スクリプトエンジン402は、アンロックスクリプトは対応するロックスクリプトの中で指定された1つ以上の基準を満たすと決定した場合、結果「真」を返す。その他の場合、それは結果「偽」を返す。
アウトプットに基づくモデルでは、スクリプトエンジン402からの結果「真」は、トランザクションの有効性についての条件のうちの1つである。標準的に、同様に満たされなければならない、プロトコルエンジン401により評価される1つ以上の更なるプロトコルレベルの条件が更にあり、Txmのアウトプットの中で指定されたデジタルアセットの総量がインプットによりポイントされる総量を超えないこと、Txm-1のポイントされるアウトプットは別の有効なトランザクションにより未だ使用されていないこと、等である。プロトコルエンジン401は、1つ以上のプロトコルレベルの条件と一緒にスクリプトエンジン402からの結果を評価し、それら全部が真である場合、トランザクションTxmを検証する。プロトコルエンジン401は、トランザクションが有効であるかどうかの指示を、アプリケーションレベル決定エンジン404に出力する。Txmが実際に検証されたことのみを条件として、決定エンジン404は、マイニングモジュール405Mび転送モジュール405Fの一方又は両方を、それらの各々のブロックチェーンに関連する機能をTxmに関して実行するよう制御することを選択してよい。これは、マイニングモジュール405Mがマイニングしてブロック151にするためにTxmをノードの各々のプール154に追加すること、及び/又は、転送モジュール405FがTxmをP2Pネットワーク106内の別のノード104へ転送することを含んでよい。しかしながら、実施形態では、決定エンジン404は無効なトランザクションを転送し又はマイニングすることを選択しないが、逆に言えば、これは必ずしも、単に有効であるという理由で、有効なトランザクションのマイニング又は転送をトリガしなければならないことを意味するものではないことに留意する。任意的に、実施形態では、決定エンジン404は、いずれか又は両方の機能をトリガする前に、1つ以上の追加条件を適用してよい。例えば、ノードがマイニングノード104Mである場合、決定エンジンは、トランザクションが有効であること、及び十分なマイニング手数料が残されることの両方を条件としてのみ、トランザクションをマイニングすることを選択してよい。
用語「真(true)」及び「偽(false)」は、本願明細書では、必ずしも単一の2進数字(ビット)のみの形式で表現される結果を返すことに限定しないが、それは勿論1つの可能な実装であることに留意する。より一般的には、「真」は、成功又は肯定的な結果を示す任意の状態を表すことができ、「偽」は、不成功又は非肯定的な結果を示す任意の状態を表すことができる。例えば、アカウントに基づくモデルでは(図4に示されない)、「真」の結果は、ノード104による署名の暗示的なプロトコルレベルの検証と、スマートコントラクトの追加の肯定的なアウトプットとの組合せにより示され得る(全体の結果は、両方の個々の結果が真である場合に、真を伝達すると考えられる)。
スクリプト
ブロックチェーンプロトコルは、トランザクションのためにスクリプト言語を使用し得る。スクリプトは、基本的に要素のリストであり、要素はデータ又は命令であってよい。命令は、スクリプトワード、オペコード、コマンド、又は関数のような文書の中で参照される。オペコード(オペレーションコードの略)は、スクリプト内のデータに対する所定の演算を実行する。スクリプト内のデータは、例えば、数値、公開鍵、署名、ハッシュ値、等であってよいオペコードは、スクリプト内のデータに作用する関数である。スクリプト言語では、スクリプトは、端から端まで実行され(通常は左から右へ)、「スタック」と世慣れるデータ構造を利用する。データは、常に、スタックへとプッシュされる(つまり、それに置かれる)。オペコードは、スタックからデータを取り出し(ポップする)(つまり、スタックからデータを取り込む)、データに対して演算を実行し、次に任意的に、新しいデータをスタックに「プッシュする」。多数のブロックチェーンで一般的に使用されるスタックに基づくスクリプト言語は、単にScriptと呼ばれる。以下は、Script言語のオペコードの観点で説明される。
ブロックチェーンプロトコルは、トランザクションのためにスクリプト言語を使用し得る。スクリプトは、基本的に要素のリストであり、要素はデータ又は命令であってよい。命令は、スクリプトワード、オペコード、コマンド、又は関数のような文書の中で参照される。オペコード(オペレーションコードの略)は、スクリプト内のデータに対する所定の演算を実行する。スクリプト内のデータは、例えば、数値、公開鍵、署名、ハッシュ値、等であってよいオペコードは、スクリプト内のデータに作用する関数である。スクリプト言語では、スクリプトは、端から端まで実行され(通常は左から右へ)、「スタック」と世慣れるデータ構造を利用する。データは、常に、スタックへとプッシュされる(つまり、それに置かれる)。オペコードは、スタックからデータを取り出し(ポップする)(つまり、スタックからデータを取り込む)、データに対して演算を実行し、次に任意的に、新しいデータをスタックに「プッシュする」。多数のブロックチェーンで一般的に使用されるスタックに基づくスクリプト言語は、単にScriptと呼ばれる。以下は、Script言語のオペコードの観点で説明される。
スタックベースのスクリプト言語は、当業者によく知られている。以下の例は、例示的なスクリプト実装を説明する。具体的には、例示的な検証及びアンロック処理が示される。
例示的なスクリプトは、<Bob’s signature><Bob’s public key>OP_DUP OP_HASH<Bob’s public address>OP_EQUALVERIFY OP_CHECKSIG。スクリプトは左から右へと演算される。
ステップ4:OP_HASHオペコードは、<Bob’s public key>をポップアウトし、それをハッシュアルゴリズムを通して(その後に1つ以上の任意的演算が続く)、<Bob’s public address>を得て、それをスタックに配置する。
ステップ6:OP_EQUALVERIFYオペコードは、最後の2つの要素をスタックからポップオフし(<Bob’s public address>及び<Bob’s public address>)、2つのアドレスが同一か否かを知るためにチェックする。それらが同一ではない場合、実行は失敗したと考えられる。条件がTRUEである場合、次のコマンドが実行される。
ステップ7:OP_CHECKSIGオペコードは<Bob’s public key>及び<Bob’s signature>をポップアウトし、それらの有効性を知るためにチェックする。この処理が完了すると、Bobは、トランザクションをアンロックし、指定された量のデジタルアセットにアクセスできる。
簡単に言うと、本願明細書で使用されるオペコードは、Script言語のもの、例えば「OP_CHECKSIG」である。しかしながら、本開示は、スクリプト言語のオペコードに限定されない。より一般的には、実施形態は特定のブロックチェーンスクリプト言語(Script)のオペコードの観点で説明され卯が、同じ教示が、スクリプトエンジン(例えば、スクリプトインタープリタ)により呼び出されると特定の関数を実行する任意のスクリプト言語の任意のオペコードを用いて実装できる。また、以下の実施形態は、楕円曲線デジタル署名アルゴリズム(elliptic curve digital signature algorithm (ECDSA))の観点で例示され得るが、RSAのようn他の暗号書名方式が従来知られており、本願明細書で等しく利用できることが理解されるだろう。
バイナリ閾値(BINARY THRESHOLD)プロトコル
閾値ベースのアンロックシステムの例は、幾つかのブロックチェーンプロトコルのマルチ署名機能のものである。幾つかのブロックチェーンプロトコルでは、m個の予め指定された公開鍵に対応する任意のm-of-n ECDSA署名を提供することにより、アンロックできるトランザクションロックスクリプトを構成することが可能である。そのようなマルチ署名トランザクションのロックスクリプト条件は、以下のように記述される:
ここで、ロックスクリプトは、必要な数(m)の有効な署名により開始し、次に、m個の署名が対応しなければならないn個の公開鍵のセット、次に、値n、及びm個全部の署名が有効であるかどうかをチェックするオペコードOP_CHECKMULTISIGをリストする。
閾値ベースのアンロックシステムの例は、幾つかのブロックチェーンプロトコルのマルチ署名機能のものである。幾つかのブロックチェーンプロトコルでは、m個の予め指定された公開鍵に対応する任意のm-of-n ECDSA署名を提供することにより、アンロックできるトランザクションロックスクリプトを構成することが可能である。そのようなマルチ署名トランザクションのロックスクリプト条件は、以下のように記述される:
アンロックスクリプトは、以下の形式であってよい:
これは、m個の署名、及びプレイスホルダの値0を含む。プレイスホルダは、それ自体は処理されないが、特定のブロックチェーンプロトコルの現在の実装に存在するバグのせいで必要なだけである。
本開示の実施形態は、トランザクションロックスクリプト(同義的にアウトプットスクリプト又はscriptPubKeyと呼ばれる)を構成する技術を提供する。このトランザクションロックスクリプトは、後のトランザクションのアンロックスクリプト(同義的にscriptSigのインプットスクリプトと呼ばれる)の中で、任意のm-of-n基準を満たすデータアイテムを提供することによりアンロックできる。OP_CHECKMULTISIGと同様に、基準は、公開鍵に対応する署名を要求してよい。しかしながら、以下の技術は署名を要求することに限定されない。一般に、任意の基準が定義されてよい。例えば、ハッシュに対するプレイメージ、式に対する解、クイズ質問に対する解、等を提供するための要件が存在してよい。
実施形態は先ず図5を参照して説明される。図5は、図1の簡易バージョンであり、バイナリ値プロトコル(Binary Threshold Protocol (BTP))を実装する例示的なシステム500を示す。第1パーティ(Alice)103aは、トランザクションTx1を生成し、トランザクションTx1をブロックチェーンネットワーク106へ送信する。ブロックチェーンプロトコルが満たされるとすると、第1トランザクションTx1はブロックチェーン150に含まれるだろう。代わりに、異なるパーティがAliceのトランザクションをブロックチェーンネットワーク106へAliceの代わりに送信できることに留意する。第1トランザクションTx1は、デジタルアセットの量を指定するアウトプットを含む。デジタルアセットは、アウトプットスクリプト(又はロックスクリプト)によりロックされる。アンロックされて、第2パーティ(Bob)103bへ移転されるために、Bobは、第2トランザクションTx2をブロックチェーンネットワーク106へ送信しなければならない。第2トランザクションTx2は、第1トランザクションTx1のアウトプットスクリプトをアンロックできるインプットスクリプト(又はアンロックスクリプト)を有する。
アウトプットスクリプトを構成するとき、 Alice103aは、複数の基準コンポーネントを含める。各基準コンポーネントは、1つ以上のオペコード(又は一般的に関数)、例えばOP_CHECKSIGVERIFYを含む。基準コンポーネントは、1つ以上のデータ要素、例えばハッシュ値も含んでよい。各基準コンポーネントは、特定のインプットデータアイテムが満たされることを要求する基準を定義する。つまり、各基準コンポーネントは、後のトランザクションのインプットスクリプトに対して実行されると、基準コンポーネントが実行に成功する、つまり「真(TRUE)」を表す値、例えば<1>を返すために、インプットスクリプトが特定のデータアイテムを含むことを要求する。例えば、基準コンポーネントの一部又は全部は、異なるデジタル署名がインプットデータアイテムとして提供されることを要求してよい。望ましくは、各基準コンポーネントは、異なる基準を定義してよい。代替として、基準コンポーネントのうちの1つ以上は、同じ基準を定義してよい。
Alice103aは、アウトプットスクリプトに、複数のカウンタスクリプトコンポーネントも含める。各カウンタスクリプトコンポーネントは、基準コンポーネントのうちの各々1つに関連付けられる。例えば、各カウンタスクリプトコンポーネントは、スクリプトが左から右へと実行されるスクリプト言語の場合には、基準コンポーネントの各々1つの後に続いてよい。各カウンタコンポーネントは、1つ以上のオペコード(又は関数)、及び任意で1つ以上のデータアイテムを含む。各カウンタコンポーネントは、その関連付けられた基準コンポーネントが満たされた場合に、カウンタをインクリメントするよう構成される。つまいr、第1基準コンポーネントが満たされた場合、第1カウンタコンポーネントは、カウンタをインクリメントする。ここで、「インクリメントする」は、増大又は減少することを意味すると解釈できることに留意する。例えば、カウンタは増加法でインクリメントされてよく(例えば、1、2、3、等)、又は、カウンタは減少法でインクリメントされてよい(例えば、3、2、1、等)。幾つかの例では、各カウンタコンポーネントは、同じ量だけ、つまり同じ数値だけ、カウンタをインクリメントしてよい。例えば、カウンタは、基準コンポーネントが満たされる度に1だけ増大してよい。代替として、カウンタコンポーネントは重み付けされてよい。つまり、幾つかのカウンタコンポーネントは、異なる量だけ、つまり異なる数値だけ、カウンタをインクリメントしてよい。例として、第1カウンタコンポーネントは、カウンタを1かでインクリメントするが、第2カウンタコンポーネントは、カウンタを2だけインクリメントしてよい。
Alice103aは、アウトプットがアンロックされるためにカウンタが少なくとも所定数(又は閾値)に達しなければならないように、アウトプットスクリプトを構成する。つまり、アウトプットスクリプトは、カウンタが所定数までインクリメントされたかどうかを決定するよう構成される。達した場合、アウトプットは、アンロックされ、Bob103bにより償還されてよい。閾値に達しない場合、アウトプットはアンロックされない。カウンタが増加法でインクリメントされる場合、アウトプットスクリプトは、カウンタが閾値以上であるかどうかを決定するよう構成される。変換しカウンタが減少法でインクリメントされる場合、アウトプットスクリプトは、カウンタが閾値以下であるかどうかを決定するよう構成される。カウンタスクリプトは、1つ以上のオペコード、及び任意で1つ以上のデータ要素を含む。1つ以上のデータ要素は、一緒に実行するとカウンタに対するチェックを実行し、閾値に達しが場合に「真(TRUE)」として成功評価する。
幾つかの例では、基準コンポーネントの合計数は、閾値数値より大きくてよい。言い換えると、基準コンポーネントを満たすことにより、カウンタを、アウトプットをアンロックするために必要な所定数より多くの数まで、インクリメントすることが可能である。代替として、各基準コンポーネントは、アウトプットがアンロックされるために、満たされなければならない。
任意で、所与の基準コンポーネントは、2つ以上のサブ基準コンポーネントで構成されてよい。基準コンポーネントと同様に、サブ基準コンポーネントは、オペコードと、任意でデータ要素を含む。データ要素は、後のトランザクションのインプットデータアイテムが成功裏に評価することを一緒に要求する。例として、基準コンポーネントは複数のサブ基準コンポーネントで構成されてよい。サブ基準コンポーネントの各々は、ハッシュ関数を各々のインプットデータアイテムに適用して、結果として生じたハッシュ値を所定のハッシュ値と比較する。結果として生じたハッシュ値と所定のハッシュ値が一致する場合、サブ基準コンポーネント、及び従って基準コンポーネントが満たされる。基準コンポーネントが複数のサブコンポーネントを含む場合でも、カウンタは、基準コンポーネントが全体として満たされるときに1回だけインクリメントされるのであって、各サブ基準コンポーネントについて1回ではない。
図5に示すように、Alice103aは、基準QnをBob103bへ送信してよい。基準Qnは、データアイテム自体ではなく、基準コンポーネントを満たすためにインプットデータアイテムとして何が要求されるかを定義することに留意する。例えば、基準コンポーネントは、デジタル署名を要求し得るが、デジタル署名自体を含まない。Bob103bに基準Qnを提供することにより、Bobは、彼が提供する必要のあるデータアイテムが何かを知ることができる。代替として、Alice103aは、基準をBob103bに提供しなくてよい。この場合、Bobは、基準コンポーネント(例えば、オペコードのシーケンス)を解釈して、対応するデータアイテムとして何が提供されるべきかを決定する必要があってよい。
アウトプットスクリプトは、n個の基準コンポーネントを含んでよい。受取人(Bob)が、ロックスクリプトの中で宣言された(formalised)n個のうちの少なくともm個の基準を満たす場合、彼は、Alice103aにより提供されているデジタルアセットの全部の量を償還できる。彼が少なくともm個の基準を満たさない場合、彼は、デジタルアセットのうちの何も償還できない。BTPは、m-of-n基準閾値を表す。ここで、mは固定され、受取人は、それらが少なくともm個の基準を満たす場合にのみデジタルアセットにアクセスできる。プロトコルは、2人の個人Alice103a及びBob103bに関して以下に詳述される。ここで、Bobがn個のうちの少なくともm個の基準を満たすことができた場合に、Alice103aはBob103bに支払う。Alice103aは、「バイナリ支払い(binary-pay)」トランザクション(bPayと称される)を作成する。この中には、Bob103bが支払いトランザクションのインプットスクリプトを提供できるまで、アウトプットに含まれるデジタルアセットをロックする、アウトプットスクリプトを含むアウトプットが存在する。支払いトランザクションは、n個の基準のうちの少なくともm個を満たすコンテンツを含む(幾つかの例では、インプットスクリプトはBobのデジタル署名も含まなければならない)。Bobのインプットスクリプトのコンテンツは、インプットデータアイテムの複数のサブユニットで構成され得る。各データアイテムは、特定の基準に対する解として提供される。
このプロトコルは、それ自体の目的を、bPayトランザクションの中のアウトプットスクリプトにより、達成する。ここで、(Bobからの)インプットがbPayアウトプットスクリプト内の対応する基準を満たすならば、カウンタをインクリメントする(例えば、ゼロに初期化され、1だけインクリメントされる)。基準は、意図された受取人(Bob)がインプットトランザクション内の位置に対象となるインプットを配置することを期待され、その結果、インプットトがbPayトランザクションのbPayアウトプットスクリプト内の適切な基準と比較されるようにするという事実により、「対応する」として説明される。カウンタの値は、スタック、例えばScript言語のALTスタックに格納されてよい。インプットがその基準に関して成功するとき、カウンタの現在状態はALTスタックから除去され(ポップされ)、メインスタックに置かれ(プッシュされ)、インクリメントされ、次に、メインスタックからポップされてALTスタックにプッシュして戻される。カウンタの最終的な値が少なくともmである場合、受取人Bob103bはbPayアウトプットをアンロックできる。
BTPの所望の特性を満たし得るアウトプット及びインプットスクリプトの例は、以下に各々TxIDbPay及びTxIDspend内に示される。
ロック(アウトプット)スクリプトのサブセクション[Criterion_1]は、受取人Bob103bが満たすよう依頼されている基準(つまり条件)を表す。これは、例えば、以下に示すようにハッシュのプレイメージを依頼し得る。
括弧内の文字はコメントであり、実際にはトランザクションに含まれなくてよいことに留意する。
bPayのアウトプットをアンロックするために、受取人Bob103bは、支払いトランザクションのインプットスクリプトの中で、インプットのn個のピースを提供し得る。ここで、これらのインプットのうちの少なくともm個は、前述の基準のうちの少なくともm個を満たす。例示的な支払いトランザクションTxIDbPayは先に示された。
n個のインプットのこれらのセットは、インプット及びアウトプットスクリプトが結合されスタックにおいて実行されるとき、インプットのピースの各々が一致し意図された基準に対して評価されるように、必要な順序で配置される。例えば、
ユーザの、任意の基準を定義する能力が与えられると、これは、バイナリ閾値プロトコルの目的を達しする。ここで、一般的な基準の閾値は、トランザクションのアウトプットが使用されるために、満たされなければならない。
スペクトル閾値(SPECTRUM THRESHOLD)プロトコル
BTPは、デジタルアセットの量を償還するためにバイナリ閾値を設定する。スペクトル閾値プロトコル(spectrum threshold protocol (STP))は、閾値の範囲を設定する。ここで、受取人により受信できるデジタルアセットの量は、成功裏に満たされた基準の数に依存する。
BTPは、デジタルアセットの量を償還するためにバイナリ閾値を設定する。スペクトル閾値プロトコル(spectrum threshold protocol (STP))は、閾値の範囲を設定する。ここで、受取人により受信できるデジタルアセットの量は、成功裏に満たされた基準の数に依存する。
図1及び図5の例示的なシステムは、後述する技術を実施するために使用されてよい。第1パーティ(Alice)103aは、複数のアウトプットを有する第1トランザクション(「sPayトランザクション」と呼ばれる)を構成する。Alice103aは、BTPと同様の方法で各アウトプットを構成する。つまり、各アウトプットはアウトプットスクリプトを有し、各アウトプットスクリプトは複数の基準コンポーネントと複数のカウンタコンポーネントを含み、各カウンタコンポーネントは基準コンポーネントのうちの各々1つと関連付けられる。各基準コンポーネントは、後のトランザクションのインプットスクリプトからのインプットデータアイテムにより満たされ得る基準を定義する。各カウンタコンポーネントは、その関連付けられた基準コンポーネントが満たされた場合に、カウンタをインクリメントするよう構成される。各カウンタコンポーネントは、同じ量だけ(例えば1)カウンタをインクリメントしてよい。代替として、カウンタコンポーネントのうちの幾つかは、異なる量だけカウンタをインクリメントしてよい。複数の基準コンポーネント及び服すのカウンタコンポーネントは、各アウトプットスクリプトの第1スクリプト条件の中で定義される。ここで、第1スクリプト条件は、単に、基準コンポーネントとカウンタコンポーネントを含むアウトプットスクリプトの部分のためのラベルである。各アウトプットは同じ基準コンポーネントを含むことに留意する。
BTPと同様に、STPでは、Alice103aは、アウトプットがアンロックされるためにカウンタが少なくとも所定数(又は閾値)に達しなければならないように、各アウトプットスクリプトを構成する。つまり、各アウトプットスクリプトは、カウンタが所定数までインクリメントされたかどうかを決定するよう構成される。所定数までインクリメントされた場合、関連付けられたアウトプットは、アンロックされ、Bob103bにより償還されてよい。閾値に達しない場合、アウトプットはアンロックされない。BTPと異なり、STPでは少なくとも1つのアウトプットスクリプトが、カウンタが異なる所定数に達することを要求する。つまり、アウトプットスクリプトの幾つかは、アンロックされるために、異なる閾値が満たされることを要求する。
幾つかの例では、各アウトプットスクリプトは、異なる閾値が満たされることを要求する。他の例では、1つ以上のアウトプットスクリプトは、同じ閾値を共有してよい。幾つかの例では、各アウトプットは、デジタルアセットの異なる量をロックしてよい。他の例では、1つ以上のアウトプットスクリプトは、デジタルアセットの同じ量をロックしてよい。デジタルアセットの量は、閾値と共に増大してよい。つまり、より多くの基準が満たされる場合に、より大きな量のデジタルアセットが償還できる。増分は、満たされる基準の数に比例してもしなくてもよい。
BTPと同様に、STPでは、基準コンポーネントの合計数は、閾値数値より大きくてよい。代替として、各基準コンポーネントは、アウトプットがアンロックされるために、満たされなければならない。またBTPと同様に、STPでは、基準コンポーネントのうちの1つ以上は、複数のサブ基準コンポーネントで構成されてよい。
図6は、第1トランザクションTx1の例示的表現を示す。第1トランザクションTx1は複数のアウトプット(Output)iを有する。示された例では、各アウトプットはデジタルアセットの量yiをロックする。つまり、アウトプット1は量y1をロックし、アウトプット2は量y2をロックし、アウトプットπは量yπをロックする。示されたように、トランザクションTx1は、少なくともyiの和に等しいデジタルアセットの量を含むインプット(Input)を含む。
図6は、各アウトプットをアンロックするために、アウトプット自体に何が含まれかではなく、インプットスクリプト内で何が提供されなければならないかを説明することに留意する。図6のアウトプット1を見ると、アウトプット1をアンロックするために、アウトプット1の閾値を満たすために十分なインプットデータアイテム(<input>により表される)を含む第2トランザクションTx2のインプットスクリプトが提供されてよい。第2トランザクションTx2は、Bob103bがアウトプット1によりロックされたデジタルアセットy1を集めることを可能にするので、以下で「収集(Collect)トランザクション」と呼ばれる。各第1スクリプト条件(以下で「収集(Collect)条件」と呼ばれる)は、収集トランザクションが各々Alice及び/又はBobのデジタル署名σAlice及びσBobを含むことも要求してよい。別の任意的特徴として、収集条件は、収集トランザクションTx2がBobの選択するシークレット値kを含むことを要求してよい。シークレット値は、収集トランザクションが送信されブロックチェーン150に含まれるまで、シークレット値がBob103bにのみ知られているという意味で、シークレットである。収集トランザクションについて、シークレット値を要求するために、Bob103bは、シークレット値のハッシュをAlice103aに送信しなければならない。収集条件は、次に、シークレット値をハッシングし、結果として生じた値を、Bob103bから取得した、収集条件の中のハッシュと比較できる。Tx1のアウトプットをアンロックする他の方法が存在することに留意する。これらは、「返金(Refund)トランザクション」及び「取り消し(Cancel)トランザクション」を参照して以下に槍術される。
便宜上、収集(Collect)、返金(Refund)、及び取り消し(Cancel)トランザクションは本願明細書では大文字で記述されることがあるが、これは、必ずしも、任意の特定の特性又は正式な名称を意味しない。用語は本願明細書の他の場所で小文字で等しく記述され得る。
幾つかの例では、Alice103aは、彼女自身で、収集トランザクションTx2の部分を構成してよい。例えば、Alice103aは、Bob103bに、サイドチャネル(例えば、図3に示されるサイドチャネル301)を介して、彼女のデジタル署名σAliceを含む部分的トランザクションを提供してよい。Alice103aは、第1トランザクションTx1内のアウトプット毎に、そのような部分的トランザクションを構成してよい。Alice103aは、彼女が構成しBobにサイドチャネルを介して送信する部分的収集トランザクションにロックタイムを含めてよい。ロックタイムは、(例えば、Unix時間又はブロック高により指定され得る)特定の時間の後まで、収集トランザクションがブロックチェーン150のブロックに成功裏に含まれることを防ぐ。ロックタイムは、トランザクションの「nLocktime」フィールドを用いて実装されてよい。nLocktimeは、最小時間を与えるトランザクションのパラメータであり、該最小時間の前には、トランザクションが受け付けられてブロックになることができない。各収集トランザクションは、後述するように、異なるロックタイムを指定してよい。
第1トランザクションTx1を構成するとき、Alice103aは、第2スクリプト条件を各アウトプットスクリプトに含めてよい。第2スクリプト条件は、以下で「返金(Refund)条件」と呼ばれる。収集条件と同様に、返金条件は、アウトプットスクリプトの部分のためのラベルであり、1つ以上のオペコード(又は一般的には関数)を含む。返金条件は、1つ以上のデータ要素も含んでよい。返金条件は、後のトランザクションのインプットスクリプトが、Aliceのデジタル署名及びBobのデジタル署名を含むことを要求するよう構成される。つまり、返金条件は、Aliceの署名とBobの署名が「返金トランザクション」のインプットスクリプトの中で提供されるかどうかを決定し、提供される場合に、返金条件は、例えばスタック上でTRUE(又は<1>)と評価する。
各アウトプットは、後のトランザクションのインプットスクリプトが1つのスクリプト条件のみを満たすことができるように構成される。つまり、任意の所与のインプットスクリプトは、収集条件と返金条件の両方を満たすことができない。これは、収集条件と返金条件がアンロックされるために、異なるインプットデータアイテムを要求するからである。例えば、収集条件は、基準コンポーネントを満たすインプットデータアイテムを要求するが、返金条件は要求しない。
幾つかの例では、Alice103aは、彼女自身で、返金トランザクションの部分を構成してよい。例えば、Alice103aは、Bob103bに、サイドチャネル(例えば、図3に示されるサイドチャネル301)を介して、彼女のデジタル署名σAliceを含む部分的トランザクションを提供してよい。Alice103aは、第1トランザクション内のアウトプット毎に、そのような部分的トランザクションを構成してよい。Alice103aは、彼女が構成しBobにサイドチャネルを介して送信する部分的返金トランザクションにロックタイムを含めてよい。Bob103bは、次に、彼の署名σBobを部分的返金トランザクションに含め、署名付き返金トランザクションをAlice103aに返信してよい。代替の例では、Bob103bが、先ず部分的返金トランザクションに署名し、それをAliceが署名するためにAliceへ送信してよいことが理解される。
収集トランザクションと同様に、Alice103aは、返金トランザクション毎にロックタイムを設定してよい。ロックタイムは、Alice及び/Bobが彼らの各々の署名によりトランザクションに署名する前に、設定されてよい。関連付けられる収集トランザクション及び返金トランザクションを有する各アウトプットについて、返金トランザクションのロックタイムは収集トランザクションのロックタイムより後である。これは、収集トランザクションが、関連する返金トランザクションの前に、ブロックチェーン150のブロックに含まれることができることを意味する。
返金条件及び返金トランザクションは、共に、Alice103aがBob103bにより請求されなかった各アウトプットの中のデジタルアセットの量を償還することを許可することを意図している。例として、Bobが任意のアウトプットの基準閾値を満たすインプットを(例えば、所定の時間期間内に)提供することができない場合、Alice103aがアウトプットに結び付けられたデジタルアセットを回収(又は返金)できる必要がある。
第1トランザクションTx1を構成するとき、Alice103aは、第3スクリプト条件をアウトプットスクリプトの一部又は全部に含めてよい。第3スクリプト条件は、以下で「取り消し(Cancel)条件」と呼ばれる。収集条件及び返金条件と同様に、取り消し条件は、アウトプットスクリプトの部分のためのラベルであり、1つ以上のオペコード(又は一般的には関数)を含む。取り消し条件は、1つ以上のデータ要素も含んでよい。取り消し条件は、後のトランザクションのインプットスクリプトが、Aliceのデジタル署名を含むことを要求するよう構成される。つまり、取り消し条件は、Aliceのデジタル署名が「取り消しトランザクション」のインプットスクリプトの中で提供されるかどうかを決定し、提供される場合に、取り消し条件は、例えばスタック上でTRUE(又は<1>)と評価する。取り消し条件は、シークレット値kも要求してよい。
取り消し条件及び取り消しトランザクションは、共に、Alice103aがBob103bにより請求されなかった各アウトプットの中のデジタルアセットの量を償還することを許可することを意図している。例として、1つのアウトプットが2つの基準が満たされることを要求し、別のアウトプットが3つの基準が満たされることを要求し、Bob103bが2つの基準のみを満たすことができる場合、Alice103aは、3基準の閾値を指定するアウトプットスクリプトを有するアウトプットを回収(又は返金)することができる必要がある。取り消しトランザクションが(ブロックチェーン上で開示されるまでBob103bにのみ知られている)シークレット値を含むことを要求することにより、Bob103bは、Bob103bが収集トランザクションを用いてアウトプットのうちの1つを請求しようとするまで、Alice103aがトランザクションのうちのいずれも取り消すことができないことを保証できる。
スペクトル閾値は、STPの文脈で利用される。ここで、受取人Bob103bが、彼が満たすことのできる基準の数に基づき支払われる。バイナリ閾値により、「どの基準」が満たされるかは問題ではなく、満たされる基準の数が問題である。
スペクトル閾値機能を達成するために、STPは、少なくともπ≦n個のアウトプットを含む(sPayトランザクションと呼ばれる)トランザクションを利用する。各アウトプットiは、Bobが満たすよう依頼される基準の量miに基づき特定の量yiを支払う。mi個の値のアセットは以下のように定義される:
意図は、受取人がmi個の基準を満たすことができる場合、受取人は、専用のアウトプットである、sPayトランザクションのアウトプットiから、yiの支払いを収集できることである。プロトコルはそのような例に適するが、支払い量は、必ずしも満たされる基準の数に比例する必要はない。比例しない例として、Bob103bが少なくとも1つの基準を満たす場合に、Bobが10単位のデジタルアセットを、少なくとも2つの基準が満たされる場合に、15単位のデジタルアセットを、少なくとも3つの基準が満たされる場合に、25単位のデジタルアセットを償還できる。
更に、アウトプットのセットに対する閾値基準支払いは「任意」であることができ、従って、必ずしも等差数列である、及び/又は所定のパターンに従う必要がない。「少なくともma個の基準」について、「少なくともmb個の基準」について、「少なくともmc個の基準」について、「少なくともmd個の基準」について、sPayトランザクションにアウトプットを包含することを考える。ここで、ma<mb及びmc<mdであり、閾値mx,my,mzについてのアウトプットは、sPayトランザクション内に存在しない。ここで、
「等差数列ではない」は、yb-yaが必ずしもyd-ycに等しくなる必要がないことを意味する。アウトプットの「任意の閾値」基準の調整に照らして、満たされ得るn個の基準が存在するが、π≦n個のアウトプットが存在することを思い出す。
幾つかの例では、sPayトランザクションの各アウトプットは、複数のスクリプト条件、例えば、収集、返金、及び取り消し条件を含む。各アウトプットは、収集条件を含まなければならず、任意で、返金条件及び/又は取り消し条件を含むことができる。図6に示されるように、アウトプット1は、収集条件及び返金条件を含み、それは、収集又は返金トランザクションにより満たされることができる。アウトプット2は、収集、返金、及び取り消し条件を含み、それは、収集、返金、又は取り消しトランザクションにより満たすことができる。
異なる支払いトランザクション及び各トランザクションの説明は以下に与えられる。
収集トランザクション-収集トランザクション(Collecti)は、Bobがそのアウトプットiのために必要な基準閾値を満たす場合に、儲け(yi)を受取人(Bob)に支払うトランザクションである。収集トランザクションのインプットスクリプトは、支払人(Alice)の署名、受取人(Bob)の署名、及びシークレット値kのうちの1つ、一部、又は全部を要求してよい。このシークレット値は、始めにBobにのみ知られ、Bobが収集トランザクションを使用するときに開示されるだけである。収集トランザクションは、タイムロックされてよい。例えば、nLockTimeフィールド/パラメータが値tiを割り当てられる。値tiは、収集トランザクションが、その時点より前にブロックチェーン150に成功裏に提出されるのを防ぐ。
取り消しトランザクション(Canceli)は、Bobが任意の別のアウトプットjに対する収集トランザクションを前に提出していた場合に、アウトプットiの儲け(yi)を支払人(Alice)に戻すトランザクションである。ここで、j≠iである。取り消しトランザクションのインプットスクリプトは、支払人(Alice)の署名、及び任意でシークレット値kを要求する。このシークレットは、Bobがブロックチェーン150に前に提出した収集トランザクションから、Aliceにより読み出されてよい。取り消しトランザクションは、Aliceがkを知っている限り、いつでも提出できる。
返金トランザクション(Refundi)は、受取人(Bob)が、例えば指定された時点it,i+1、ここでti<ti,i+1<ti+1、の前に、ブロックチェーン150に(そのアウトプットに対する)収集トランザクションを提出しない場合に、アウトプットiの儲け(yi)を支払人(Alice)に返金するトランザクションである。取り消しトランザクションのインプットスクリプトは、支払人(Alice)の署名、及び受取人(Bob)の署名を要求する。返金トランザクションは、タイムロックされてよい。つまり、返金トランザクションは、nLockTimeフィールド/パラメータの値ti,i+1の後にのみ、ブロックチェーン1150に成功裏に提出できる。
上述のように、sPayトランザクションの設計は、図6に示される。図に示された情報は、トランザクションの様々なアウトプット、及び各アウトプットを成功裏に使用するために何が要求されるかに焦点を当てている。本例では、各アウトプットi>1は、アウトプットスクリプトによりロックされる。該アウトプットスクリプトは、受取人が3つの異なるオプションを用いてアウトプットを使用することを許可する。これらのアンロックオプションの各々は、トランザクション(返金、収集、又は取り消し)に対応する。前述のように、アウトプット1は、2つのオプション(返金及び収集)のみを用いて使用できることに留意する。さらに、必須ではないが、STPは、受取人が満たすことのできる基準が多いほど、受取人がより多くの支払われるべきであるという前提又は期待の上に構築される。これに従い、図6に示されるsPayトランザクションでは、アウトプットは払い出されている量(これは、そのアウトプットについて満たされるべき基準の数と一致する)に関して(上から下へ)順序付けられる。図中、大きなアウトプット(及び従って必要な基準の数)は、低いアウトプットを有するアウトプットより上にある。
図7は、アウトプットi:i≠1のsPayトランザクションの例示的なアウトプットを示す。このアウトプットは、取り消し、収集、又は返金トランザクションを用いて使用できる。
図8は、例示的な取り消しトランザクション800を示す。取り消しトランザクション800を利用して図7に示されるアウトプットを使用するために、支払人(支払人(Alice)であると期待される)は、彼女の署名及びシークレット値kを生成しなければならない。シークレット値が考えられ、始めに受取人Bob103bにのみ知られている。ブロックチェーンスクリプト言語は、(ECDSA)署名に対する要求、及びシークレット値に対する要求を実現する。ハッシュパズルは、シークレット値kを要求するために利用されてよい。シークレット値と署名の両方を要求するそのようなロックスクリプトの例は、以下であ得る:
ここで、H(k)は、シークレット値kのハッシュであり、PubAは支払人Alice103aにより所有される公開鍵である。ハッシュは、SHA-256のような一方向暗号ハッシュ関数のダイジェストを意味するために取り入れられる。標準的なハッシュ関数は、任意のサイズのインプットを取り入れ、固定範囲内の整数を生成する。例えば、SHA-256ハッシュ関数は、そのアウトプットハッシュダイジェストとして256ビットの数値を与える。
このスクリプトは、取り消し条件([Condition: Cani])と呼ばれる。(取り消しトランザクション内の)アンロックスクリプトは以下であってよい:
ここで、sigAは、公開鍵PubAを利用する取り消しトランザクションの(ECDSA)署名である。
このスクリプトは、取り消しインプット(<Input: Cani>)と呼ばれる。
図9は、例示的な返金トランザクション900を示す。図7に示すアウトプットを返金トランザクション900を利用して使用するために、支払人(Alice)は彼女の署名sigAを生成しなければならず、受取人(Bob)も彼の署名sigBを提供しなければならない。返金トランザクション900は、支払人と受取人の両者により署名されなければならない。これは、返金トランザクションが構成されるべきであるという相互の合意を保証することであり、合意した時点の後まで、返金トランザクション900が有効になるのを防ぐnLockTime値(つまり、ロックタイム901)の要求される包含に特定の注意が払われる。両者の署名を要求し得るスクリプトの例は、以下であり得る:
このスクリプトは、返金条件([Condition:Refi])と呼ばれる。2-of-2(m-of-n)マルチシグスクリプトが代わりに利用できる。
このスクリプトは、返金インプット(<Input:Refi>)と呼ばれる。
図10は、収集トランザクション1000の例を示す。図7のアウトプットを収集トランザクション1000を少なくとも4個のアイテムを利用して使用するために、提供されなければならない。支払人(Alice)は彼女の署名(sigA)を生成しなければならず、受取人(Bob)は彼の署名(sigB)及びシークレット値kを提供しなければならない。更に、Bob103bは以下のインプットを提供しなければならない:
これから、そのアウトプットについて必要なmi個の基準を満たすために十分な「正しい」インプットデータアイテムが存在することが期待される。収集トランザクション1000は、合意した時点の後まで収集トランザクション1000が有効になるのを防ぐnLockTime値(つまり、ロックタイム1001)を含む。4ピースのデータを要求し得るスクリプトの例は、以下であり得る::
このスクリプトは、収集条件([Condition: Coli])と呼ばれる。2-of-2(m-of-n)マルチシグスクリプトが代わりに利用できる。セクション[TEST mi]は、スクリプトサブセクションの表現として動作し、これは、ユーザが満たさなければならない基準のセットの全体を定義し、基準が満たされる毎にカウンタをインクリメントし、満たされた基準の数が正しいこと(≧mi)を検証する。この[TEST mi]スクリプトサブセクションは、TxIDbPayの中で示されるアウトプットスクリプトと同様であってよく、以下に複製される。ここで、<mi>は、アウトプットiについての閾値を表す。
このスクリプトは、収集インプット(<Input: Coli>)と呼ばれる。このスクリプトは、両方のパーティの署名と、シークレット値kを含む。また、スクリプト内には、値<answers>も見られる。これは、sPayトランザクションのアウトプットiのアウトプットスクリプトのセクション内の[TEST mi]セクションの中の少なくともmi個の基準を満たす解であることが期待される、複数のデータアイテムを含むインプットスクリプトのセクションである。
<answers>のサブ要素の各々は、特定の順序で配置される。その結果、各<input_i>は、[TEST]スクリプト内で見付かる意図された[criterion_i]により評価される。要素<input_i>は、[criterion_i]の中で支払人Aliceにより定義されたパズル基準に対する、受取人(Bob)の解であることが期待される。BTPと同様に、基準はサブ基準を有することができ、インプット値は複数のサブインプットで構成できることに留意する。
sPayトランザクションのアウトプットiを使用するために少なくとも3つの異なる支払いオプション(収集、返金、取り消し)のうちのオプションにより、該アウトプットのためのロック(アウトプット)スクリプトは、支払いトランザクションの選択を実現するために必要なスクリプト要素を組み込まなければならない。これを行うために、ロックスクリプトは、条件付き要素、例えばOP_IF、OP_ELSE、等を利用してよい。そのようなロックスクリプトの一例は以下に与えられる。
括弧内の文字はコメントであり、実際にはトランザクションに含まれなくてよいことに留意する。
ここで、スクリプトは、3つの条件[Condition: Coli]、[Condition: REFi]、及び[Condition:Cani]を含み、各条件は特定の支払いトランザクションを制御する。これらの条件は、前述したロックスクリプトである。sPayアウトプットを成功裏に使用するために、受取人Bob103bは、それらの意図された支払いトランザクションタイプについて必要な正しいインプットを含めなければならない。支払いトランザクションタイプを決定するインプットスクリプトは、少なくとも3つのサブセクションを有し得る(以下のセルを参照)。これらのインプットは、前述したものに対応し、以下のセルに示される。
受取人Bob103bが特定の種類の支払いトランザクション、例えば収集1000を提出している場合、Bob103bは、適切なスクリプトサブセクション<Input: Coli>をその3つの部分のインプットスクリプトに包含させ、他の2つのインプット要素を「ダミーデータ(dummy data)」で置き換えることを期待される。私たちの目的のために<dummy>として表され、ダミーデータは、[Condition]に対して評価されるとき意図的に「不正」であると評価するインプットデータとして定義される。従って、Bob103bが収集トランザクション1000を提出したいと望む場合、収集トランザクションのインプットスクリプトは以下に似ている:
図11は、STPに従うトランザクションの例示的な時間のずれを示す。「複数のアウトプットを有するトランザクションであって、各アウトプットが、提案された受取人が満たすことのできる、nのうちのmi個の基準に基づき支払う」ことの潜在的な脆弱性は、「受取人がn個のうちの少なくともmi個の解を知っているならば、提案された受取人はmi-1個の解、mi-2個の解、…、2個の解、又は1個の解を知っている」という記述の中で捕らえられる。これは、受取人が、sPayトランザクションの複数のアウトプットを使用することが可能である、と解釈される。これは、勿論、非常に望ましくない。ロックタイム及び時間のずれは、そのような悪用を阻止するために使用できる。この時間のずれは、トランザクションのnLockTimeフィールドにより有効にされてよく、受取人が収集トランザクションをsPayトランザクションの1つのみのアウトプットに提出することしかできないことを保証するよう動作する。
支払いトランザクションの時間のずれは、図11に示す図を用いて説明される。時間は、水平軸に、左から右へと示される。支払いトランザクションは、黒(full-bodied)矢印として示され、矢印の始点(tail)は、トランザクションに配置されたロックタイムにより制限されるように、トランザクションがブロックチェーン150に成功裏に提出され得る時間に(又はその後に)開始する。例として、収集トランザクションCollect1は、時間=t1の後に提出されなければならないが、収集トランザクションWinning2は、時間=t2の後に提出されなければならない。支払いトランザクションの意図された受取人は、矢印の終点(head)に示される。取り消しトランザクションは、時間依存ではない(この文脈では、これは、取り消しトランザクションの提出がnLockTime値により制限されないことを意味する)。取り消しトランザクションは、kのシークレット値(及びAliceの署名)が提出者により知られている限り、いつでもブロックチェーン150に提出できる。アウトプットi=1は、取り消しトランザクションを有しない。任意のアウトプットjの取り消しトランザクションは、Alice103aに、Collectjトランザクションを直ちに「取り消す」能力を与えるために利用される。Collectjは、アウトプットiの収集トランザクションが提出された後にのみ、提出可能である。Collect1は「前の」Collectjを有しないので、アウトプットi=1に対する取り消しトランザクションは適用できない。Bobが彼のCollect1トランザクションを提出しない場合、Refund1トランザクションがアウトプットi=1のために存在することに留意する。収集トランザクションのブロックチェーン150への提出は、値kを任意の関心のあるパーティに開示することに留意する。
図11によると、提出され得る1トランザクションTx1は、アウトプットi=1のCollect1のものである。これは、Bobにより、時間t1の後に提出可能である。アウトプットi=1について、返金トランザクションRefundjは、時間t1,2(これは、時間t1より後であるが時間t2より前の時間である)で(Aliceにより)提出できるだけである。従って、時間t1の後、Bobは、(Aliceがアウトプットを彼女自身に返金しないように)収集トランザクションCollect1を提出するための時間スパンΔt1=t1,2-t1の時間単位を有する。この時間スパンは、両矢印により表される。
提出され得る次の収集トランザクション1000は、Collect2であり、これは時間t2の後にのみ提出されてよい。これは、Bob103bがこの第2のアウトプットi=1の儲けを収集したいと望む場合、彼はこのトランザクションを、Alice103aがアウトプットi=1の返金トランザクションRefund1を提出してよい時間(に、又はその後に)である時間t1,2の後であるt2の後に提出できるだけである。
これは、Bob103bに対する保護を提供し、sPayトランザクションの複数のアウトプットを収集する。支払いトランザクションsPayに資金提供する人物(Alice)は、受取人が収集トランザクションCollect2を提出する能力を有する前に、返金トランザクションRefund1を実行する責任を有する。従って、ti,i+1の後に、Aliceは、(BobがCollecti+1を提出可能にならないように)返金トランザクションを提出するために、Δi,i+1=ti+1-ti,i+1の時間単位を有する。
アウトプットi=1は、取り消しトランザクションを有しない例外である。取り消しトランザクションを調査するために、図11の一般的アウトプットi:i>1を見る。取り消しトランザクションCanceliは、返金の機能を実行し、例外は、返金トランザクションRefundiと異なり、取り消しトランザクションのブロックチェーン150への提出は、nLockTime値にってではなく、シークレット値の知識(又はその欠如)により制限されることである。シークレット値がkであることが知られている限り、Alice103aは、「返金」トランザクションのこの取り消しバージョンを提出できる。幾つかの例では、Aliceの署名をこのトランザクションに包含することも要求される。Bob103bが収集トランザクションを提出するとき、このシークレット値が開示されるならば、Bob103bが収集トランザクションCollectiを提出したとすると、結果として生じるアウトプットj:j>iの中の全ての取り消しの提出は、Alice103aにより直ちに提出されてよい。これは、全部の後のアウトプットを、Bob103bにとってアクセス不可能にする。
提案された受取人Bob103bは、従って、アウトプットのうちのどれが、彼が成功裏に使用できるか、及び彼が提出したいと望んでいるかを(オフブロックで)評価する責任を有する。選択されたアウトプットは、デジタルアセットの最大量によりBobに報酬を与えるものであることが期待される。Bob103bがアウトプットiを選択した場合、Bobは、彼がトランザクションCollectiを提出するまで、値kを秘密に保持する必要がある。任意の前のアウトプット(j<i)について、Aliceは、返金トランザクションRefundjを提出している(又は少なくとも提出する機会を有した)であろう。
望ましくは、ロックタイム及び時間のずれは必須ではない。代わりに、Alice103aは、単に取り消し及び/又は返金トランザクションを適切な時間に提出してよい。同様に、Bob103bは、単一の収集トランザクションのみを提出すると信頼されてよい。
図12は、STPの例示的なシーケンスを示し、時間は上から下へ進行する。シーケンスは、以下の通りである。
1.Bobはシークレット値kを選択する。
2.Bobは、シークレット値のハッシュをAliceへ送信する。
3.Aliceは、sPayトランザクションを生成する。
4.Aliceは返金及び収集トランザクションを生成する。
5.Aliceは、基準のセット及びロックタイムをBobへ送信する。
6.Aliceは、返金トランザクション及び収集トランザクションに署名し、それらをBobへ送信する。
7.Bobが合意する場合、Bobは、返金トランザクションに署名し、それらをAliceへ返送する。
8.Aliceは、sPayトランザクションをブロックチェーンに提出する。
9.Bobは、可能な限り多くの基準に対する解を決定する。
10.Bobは、デジタルアセットの最大量を支払う、彼がアンロックできるアウトプットを決定する。
11.この時点で、Aliceは、任意のアウトプットj<iについて、返金をブロックチェーンに提出してよい。
12.Bobは、アウトプットiの収集トランザクションをブロックチェーンに提出する。
13.ここで、シークレット値が開示され、Aliceはアウトプットj>iの取り消しトランザクションを提出する。
1.Bobはシークレット値kを選択する。
2.Bobは、シークレット値のハッシュをAliceへ送信する。
3.Aliceは、sPayトランザクションを生成する。
4.Aliceは返金及び収集トランザクションを生成する。
5.Aliceは、基準のセット及びロックタイムをBobへ送信する。
6.Aliceは、返金トランザクション及び収集トランザクションに署名し、それらをBobへ送信する。
7.Bobが合意する場合、Bobは、返金トランザクションに署名し、それらをAliceへ返送する。
8.Aliceは、sPayトランザクションをブロックチェーンに提出する。
9.Bobは、可能な限り多くの基準に対する解を決定する。
10.Bobは、デジタルアセットの最大量を支払う、彼がアンロックできるアウトプットを決定する。
11.この時点で、Aliceは、任意のアウトプットj<iについて、返金をブロックチェーンに提出してよい。
12.Bobは、アウトプットiの収集トランザクションをブロックチェーンに提出する。
13.ここで、シークレット値が開示され、Aliceはアウトプットj>iの取り消しトランザクションを提出する。
上述のシーケンスは、1つの特定の例であり、他の順序が可能である。例えば、基準がBobに提示されるときに何らかの柔軟性がある。
上述のように、バイナリ及びスペクトル閾値プロトコルの幾つかの実装では、基準を成功裏に満たすことが、カウンタを1だけインクリメントするか、又は、他の実装では、カウンタは別の値だけインクリメントされてよい。「重み付けされた基準」の実装は、特定の基準が他の基準より「重要」である特定の文脈で必要であってよい。重み付けされた基準は、基準を満たすために報酬として与えられる量が強制的に均一ではないが、基準が何であるかに依存する場合に使用されてよい。
基準iを満たすことは、カウンタをwiだけインクリメントし、ここで、
閾値は、値mi:mi≦vに設定される。ここで、v≧nは達成可能な最大(カウンタ)値である。例えば、基準i(criterion_i)を満たすことは、カウンタを2だけインクリメントしてよく、基準j(criterion_j)を満たすことは、カウンタを1だけインクリメントしてよく、基準k(criterion_k)を満たすことは、カウンタを3だけインクリメントしてよい、等である。
そのような実装では、閾値に達することは、満たされる基準の数に限られるだけでなく、何の基準が満たされるかにも限られる。Bob103bは、様々な数の基準を満たして、閾値に達してよい。例として、閾値が6として設定される場合、Bob103bは、3つの基準を満たすことにより閾値に達してよく、ここで、各基準の重みは2単位の価値がある。或いは、Bob103bは、2つの基準を満たすことにより閾値に達してよく、ここで、各基準の重みは3単位の価値がある。
BTP及びSTPの両方は、カウンタがaltスタックに保持している値を[TEST]スクリプト内でインクリメントされ、各基準iについてwiになるよう変更するだけで、この重み付けされた検討を組み込むよう設計できる。閾値<mi>は支払人の選択のままであり、基準及びそれらの重みを考慮して選択される。
これまでに示した[TEST]スクリプト(加重及びその他)について、その実行の効率を向上するために行うことができる改良がある。以下は、少なくとも1つの改良を説明する。効率向上は、実行されるインプット基準評価(input-criterion assessment (I-CA))の数を減少することにより行われる。前のバージョンの[TEST]スクリプトでは、n個のインプットの各々は、その対応する基準に対して評価される。これは、n I-CAが常に行われることを意味する。これは、インプット基準評価が特に計算上高価である場合に問題になり得る。
前のバージョンの[TEST]スクリプトと、アンロックスクリプトのインプットの対応するセットは、受取人Bob103bがインプットのうちのどれがインプットの対応する基準を満たすことが可能であるかを知っている又は知らないかも知れないという思想に基づく。従って、ロックスクリプトは、どれが正しいかを決定すると同時に、相応してカウンタを更新する。しかしながら、Bob103bは、収集トランザクションを提出する前に、n個の基準のうちのどのm個を、彼が満たすことができるかを知ることが可能である。[TEST]スクリプトは、Bob103bにI-CAを実行することを要求する基準を指定するよう依頼するように、再加工できる。
改訂された[TEST]スクリプトでは、OP_IF要素が各基準の前に導入されることに留意する。このif文は、Bobからのインプット値(値0又は1)をチェックして、BobがI-CAがその基準について実行されることを望むかどうかを決定する(YESの場合に1、NOの場合に0)。OP_IFオペコードは、特定のデータ要素をチェックする等価な関数により置き換えられてよい。一般に、[TEST]スクリプトは、インプットが2つの可能なデータ要素のうちの1つを含むかどうかをチェックするよう構成される「チェック(check)」コンポーネントを含んでよい。第1データ要素が提供される場合、以下のスクリプトが実行し、第2の異なるデータ要素では逆である。
VERIFYスクリプト要素は、一番上のスタック値が真ではない場合に、トランザクションを無効としてマークすることに留意する。また、一番上のスタック値は、除去される。基準が失敗する場合、VERIFYコンポーネントは、トランザクション全体を直ちに無効にし、更なるスクリプトの実行は行われない。ロックスクリプトの改訂された[TEST]を考慮すると、収集トランザクションの中のアンロックスクリプトも改訂される必要がある。上述のアンロックスクリプトは、以下に示されるセクション<answers>を含む。
インプットスクリプトのこのセクションの効率的な改訂されたバージョンは、Bobが特定の基準についてI-CAが実行されることを望むかどうかを示す散財している第1又は第2データ要素(例えば、0又は1の値)を特徴とする。そのようなバージョンの一例は以下に示される。
ここで、Bob103bは、基準1、4、及びnの解を提供するだけで、彼が要求される閾値に達することができることを知っている。従って、<1>の値は、<input_1>、<input_4>、及び<input_n>要素の後に置かれる。<0>は、<answers>スクリプトの中にあった全ての他の<input_i>値を置き換える。上述のような改訂された<answers>を利用して、実行されるI-CAの総数は、nではなく3になる。従って、重み<w1>が全てのiについて1に等しいとすると、m個のI-CAのみが、m-of-n閾値について実行される。
図13及び14は、効率が向上した[TEST]スクリプトの例示的な使用例を示す。使用例は、幾つかのブロックチェーンプロトコルのm-of-nマルチシグ機能の現在の実装に対する代替の使用例である。m-of-nマルチシグ機能の既存の実装では、OP_CHECKMULTISIGにより、ロックスクリプトは、n個の公開鍵のセットを含み、一方で、アンロックスクリプトは、m個のデジタル(ECDSA)署名を含む。署名が閾値を満たすかどうかの決定は、以下の方法で行われる。OP_CHECKMULTISIGオペコードは、ECDSA一致が見つかるまで、第1署名を各々の公開鍵と比較する。次の公開鍵から開始して、ECDSA一致が見つかるまで、第2署名を各々の残りの公開鍵と比較する。処理は、全部の署名がチェックされるか、成功の結果を生成するために十分な公開鍵が残っていないときまで、繰り返される。全部の署名が公開鍵と一致する必要はない。公開鍵は、いずれかの署名比較に失敗した場合に再度チェックされないので、署名は、それらの対応する公開鍵がscriptPubKey内で置き換えられた順序と同じ順序を用いて、scriptSig内で置き換えられなければならない。全部の署名が有効な場合、1が返され、その他の場合に0が返される。
図13に示す3-of-5マルチシグの例を検討する。各公開鍵Piは基準と見なすことができ、各署名Sigiはインプットと見なすことができる。破線矢印は失敗したI-CAを表し、破線ではない矢印は成功したI-CAを表すことに留意する。(Sig3について同様に)Sig3を評価するために2つのI-CAが存在することが分かる。スクリプトの中に、Sig3が評価されるべき公開鍵Piの提示が存在しないという事実により、Sig3は、順序付きシーケンスで、Piのセットに対して以下のいずれかになるまで評価されなければならない:
a)一致するPiに達する;
b)一致が見付からず、全部のPi値を使い果たす;又は
c)一致が見付からず、十分なPi値を使い果たし、その結果、Piの残りのセットの中で最終的に一致するものを見付けた場合でも、(全部の残りのPiが残りのSigiと成功裏に一致した場合でさえ)要求される閾値を満たすのに十分な残りのPiが存在しない。
a)一致するPiに達する;
b)一致が見付からず、全部のPi値を使い果たす;又は
c)一致が見付からず、十分なPi値を使い果たし、その結果、Piの残りのセットの中で最終的に一致するものを見付けた場合でも、(全部の残りのPiが残りのSigiと成功裏に一致した場合でさえ)要求される閾値を満たすのに十分な残りのPiが存在しない。
最終的に、重要なポイントは、OP_CHECKMULTISIGでは、各Sigiが1つ以上のPublicKey-Signature I-CAに関与していることである。効率の向上した[TEST]関数が利用された場合、実行されるI-CAの数において効率の増進があり得る。そのようなm-of-n ECDSA署名[TEST]スクリプトを検討する。以下に1つが提案される。
Bobが、値0及び1を使用して、署名が評価される公開鍵を示すという事実により、これは、図14に示すように、各署名が関与するI-CAの数を低減し、最大は1である(1以上のOP_CHECKMULTISIGと対照的である)。
[TEST]関数(上述のバージョン及び効率の向上したバージョンの両方)を利用する更なる利点は、プライバシーの増進である。OP_CHECKMULTISIGの代わりに、m-of-nマルチシグのために[TEST]関数を利用することにより、Bob103bは、公開鍵を開示する必要がない。これは、OP_CHECKMULTISIGロックスクリプトは公開鍵を含むが、[TEST]ロックスクリプトは公開鍵のハッシュを含むという事実による。
<結論>
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
より一般的には、本願明細書に開示された教示の第1の例によると、コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記方法は、前記第1パーティにより実行され、
前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、
前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントであって、各基準コンポーネントが前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる、複数のカウンタスクリプトコンポーネントと、を含み、
前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされる必要がある、方法が提供される。
前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、
前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントであって、各基準コンポーネントが前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる、複数のカウンタスクリプトコンポーネントと、を含み、
前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされる必要がある、方法が提供される。
本願明細書に開示された教示の第2の任意的なインスタンスによると、第1のインスタンスによる方法であって、前記複数の基準コンポーネントの合計数が、所定の数より大きい又は等しいことが提供される。
本願明細書に開示された教示の第3の任意的なインスタンスによると、第1又は第2のインスタンスによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部が異なる各々の基準を定義することが提供される。
本願明細書に開示された教示の第4の任意的なインスタンスによると、第1~第3のインスタンスのいずれかによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、複数のサブ基準コンポーネントを含み、各サブ基準コンポーネントは、各々のサブインプットデータアイテムを要求することが提供される。
本願明細書に開示された教示の第5の任意的なインスタンスによると、第1~第4のインスタンスのいずれかによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部、及び/又は前記複数のサブ基準コンポーネントのうちの1つ、一部、又は全部は、各々、インプット又はサブインプットデータアイテムとして、所定のブロックチェーン公開鍵に対応する各々のブロックチェーン署名を必要とすることが提供される。
本願明細書に開示された教示の第6の任意的なインスタンスによると、第1~第5のインスタンスのいずれかによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、前記カウンタを異なる数だけインクリメントするよう構成されるカウンタスクリプトコンポーネントに関連付けられることが提供される。
本願明細書に開示された教示の第7の任意的なインスタンスによると、第1~第6のインスタンスのいずれかによる方法であって、前記インプットスクリプトの中の各インプットデータアイテムは、第1又は第2要素を含み、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、各々のチェックコンポーネントに関連付けられ、各チェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記インプットデータアイテムが前記第1要素を含む場合にのみ、前記関連付けられた基準コンポーネントを実行する、
よう構成されることが提供される。
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記インプットデータアイテムが前記第1要素を含む場合にのみ、前記関連付けられた基準コンポーネントを実行する、
よう構成されることが提供される。
本願明細書に開示された教示の第8の任意的なインスタンスによると、第1~第7のインスタンスのいずれかによる方法であって、各アウトプットスクリプトは、実行された基準コンポーネントが前記インプットスクリプトのインプットデータにより満たされない場合に、前記第1トランザクションを無効にするよう構成されることが提供される。
本願明細書に開示された教示の第9の任意的なインスタンスによると、第1~第8のインスタンスのいずれかによる方法であって、前記各々の基準及び/又はサブ基準を前記第2パーティへ送信するステップを含むことが提供される。
本願明細書に開示された教示の第10の任意的なインスタンスによると、第1~第9のインスタンスのいずれかによる方法であって、前記第1トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップを含むことが提供される。
本願明細書に開示される教示の第11のインスタンスによると、第1パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第1~第10のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第1~第10のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
本願明細書に開示された教示の第12のインスタンスによると、コンピュータ可読記憶装置上に具現化され、第1パーティのコンピュータ機器上で実行すると第1~第10のいずれかのインスタンスの方法を実行するよう構成される、コンピュータプログラムが提供される。
本願明細書に開示される教示の第13のインスタンスによると、ブロックチェーンに包含するための第1トランザクションであって、前記第1トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1トランザクションは、1つ以上のコンピュータ可読データ媒体上に具現化され、実行可能コードを含み、前記コードは、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを必要とする、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
前記コードは、ブロックチェーンネットワークのノードにおいて、第2トランザクションのインプットスクリプトと一緒に実行されると、
各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、
前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転する、
よう構成される、第1トランザクションが提供される。
前記コードは、ブロックチェーンネットワークのノードにおいて、第2トランザクションのインプットスクリプトと一緒に実行されると、
各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、
前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転する、
よう構成される、第1トランザクションが提供される。
本願明細書に開示される教示の第14のインスタンスによると、コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1及び第2パーティは、それおzれ、前記ブロックチェーンに関連付けられ、前記方法は、前記第1パーティにより実行され、
複数のアウトプットを含む第1トランザクションを生成するステップを含み、
各アウトプットは、前記デジタルアセットの各々の量をロックし、各々の第1スクリプト条件を含み、
各第1スクリプト条件は、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
各第1アウトプットスクリプト条件は、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも各々の所定数までインクリメントされる必要があり、
前記第1スクリプト条件のうちの1つ、一部、又は全部は、前記カウンタが異なる所定数までインクリメントされることを必要とする、方法が提供される。
複数のアウトプットを含む第1トランザクションを生成するステップを含み、
各アウトプットは、前記デジタルアセットの各々の量をロックし、各々の第1スクリプト条件を含み、
各第1スクリプト条件は、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
各第1アウトプットスクリプト条件は、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも各々の所定数までインクリメントされる必要があり、
前記第1スクリプト条件のうちの1つ、一部、又は全部は、前記カウンタが異なる所定数までインクリメントされることを必要とする、方法が提供される。
本願明細書に開示された教示の第15の任意的なインスタンスによると、第14のインスタンスによる方法であって、前記アウトプットのうちの1つ、一部、又は全部が異なる各々の量の前記デジタルアセットをロックすることが提供される。
本願明細書に開示された教示の第16の任意的なインスタンスによると、第15のインスタンスによる方法であって、各々のアウトプットによりロックされる前記デジタルアセットの前記各々の量は、前記各々の第1スクリプト条件が前記カウンタをインクリメントすることを要求する前記各々の所定数に基づくことが提供される。
本願明細書に開示された教示の第17の任意的なインスタンスによると、第14~第16のいずれかのインスタンスによる方法であって、前記インプットスクリプトによりアンロックされるために、各第1スクリプト条件は、前記インプットスクリプトが、前記第1パーティのデジタル署名及び/又は前記第2パーティのデジタル署名を含むことを要求するよう構成されることが提供される。
本願明細書に開示された教示の第18の任意的なインスタンスによると、第17のインスタンスによる方法であって、各アウトプットについて、各々の第2トランザクションを生成するステップであって、各第2トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名を含む、ステップと、
各第2トランザクションを前記第2パーティへ送信するステップと、
を含むことが提供される。
各第2トランザクションを前記第2パーティへ送信するステップと、
を含むことが提供される。
本願明細書に開示された教示の第19の任意的なインスタンスによると、第18のインスタンスによる方法であって、各第2トランザクションは、異なるロックタイムを含み、
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成されることが提供される。
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成されることが提供される。
本願明細書に開示された教示の第20の任意的なインスタンスによると、第14~第19のいずれかのインスタンスによる方法であって、各第1スクリプト条件は、シークレット値のハッシュを含み、
前記インプットスクリプトによりアンロックされるために、各第1スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを必要とするよう構成されることが提供される。
前記インプットスクリプトによりアンロックされるために、各第1スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを必要とするよう構成されることが提供される。
本願明細書に開示された教示の第21の任意的なインスタンスによると、第14~第20のいずれかのインスタンスによる方法であって、各アウトプットは、各々の第2スクリプト条件を含み、前記第2スクリプト条件は、第3トランザクションのインプットスクリプトと一緒に実行されると、該インプットスクリプトによりアンロックされるために、前記第3トランザクションの前記インプットスクリプトが前記第1パーティの所定のデジタル署名と前記第2パーティの所定のデジタル署名を含むことを要求することが提供される。
本願明細書に開示された教示の第22の任意的なインスタンスによると、第21のインスタンスによる方法であって、各アウトプットについて、各々の第3トランザクションを前記第2パーティから受信するステップであって、各第3トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名と、前記第2パーティの前記所定のデジタル署名を含む、ステップと、
を含むことが提供される。
を含むことが提供される。
例えば、前記第1パーティは、前記第3トランザクションに署名し、署名付き第3トランザクションを前記第2パーティへ送信してよい。前記第2パーティは、次に、前記第3トランザクションを前記第1パーティへ送信してよい。
本願明細書に開示された教示の第23の任意的なインスタンスによると、第22のインスタンスによる方法であって、各第3トランザクションは、異なるロックタイムを含み、
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成されることが提供される。
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成されることが提供される。
本願明細書に開示された教示の第24の任意的なインスタンスによると、少なくとも第19のインスタンスに依存する第23のインスタンスによる方法であって、各アウトプットは、前記第2トランザクションのうちの異なる1つ、及び前記第3トランザクションのうちの異なる1つに関連付けられ、
各アウトプットについて、前記第3トランザクションの各々のロックタイムは、前記第2トランザクションが前記ブロックチェーンに包含できる時間より後の時間まで、前記第3トランザクションが前記ブロックチェーンに包含されるのを防ぐことを提供する。
各アウトプットについて、前記第3トランザクションの各々のロックタイムは、前記第2トランザクションが前記ブロックチェーンに包含できる時間より後の時間まで、前記第3トランザクションが前記ブロックチェーンに包含されるのを防ぐことを提供する。
本願明細書に開示された教示の第25の任意的なインスタンスによると、第14~24のいずれかのインスタンスによる方法であって、前記アウトプットのうちの1つ、一部、又は全部は、各々の第3スクリプト条件を含み、
各第3スクリプト条件は、第4トランザクションのインプットスクリプトと一緒に実行されると、前記インプットスクリプトによりアンロックされるために、前記第4トランザクションの前記インプットスクリプトが、前記第1パーティの所定のデジタル署名を含むことを要求するよう構成されることが提供される。
各第3スクリプト条件は、第4トランザクションのインプットスクリプトと一緒に実行されると、前記インプットスクリプトによりアンロックされるために、前記第4トランザクションの前記インプットスクリプトが、前記第1パーティの所定のデジタル署名を含むことを要求するよう構成されることが提供される。
本願明細書に開示された教示の第26の任意的なインスタンスによると、少なくとも第20のインスタンスに依存する第25のインスタンスによる方法であって、各第3スクリプト条件は、シークレット値のハッシュを含み、
前記第4トランザクションのインプットスクリプトによりアンロックされるために、各第3スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを要求するよう構成されることが提供される。
前記第4トランザクションのインプットスクリプトによりアンロックされるために、各第3スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを要求するよう構成されることが提供される。
本願明細書に開示された教示の第27の任意的なインスタンスによると、第26のインスタンスによる方法であって、前記シークレット値を取得するステップと、
前記アウトプットの1つ、一部、又は全部について、各々の第4トランザクションを生成するステップであって、各第4トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名と前記シークレット値を含む、ステップと、
各第4トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含むことが提供される。
前記アウトプットの1つ、一部、又は全部について、各々の第4トランザクションを生成するステップであって、各第4トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名と前記シークレット値を含む、ステップと、
各第4トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含むことが提供される。
本願明細書に開示された教示の第28の任意的なインスタンスによると、第14~第27のいずれかのインスタンスによる方法であって、前記複数の基準コンポーネントの合計数が、各々の所定の数より大きい又は等しいことが提供される。
本願明細書に開示された教示の第29の任意的なインスタンスによると、第14~28のいずれかのインスタンスによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部が異なる各々の基準を定義することが提供される。
本願明細書に開示された教示の第30の任意的なインスタンスによると、第14~第29のいずれかのインスタンスによる方法であって、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、複数のサブ基準コンポーネントを含み、各サブ基準コンポーネントは、各々のサブインプットデータアイテムを要求することが提供される。
本願明細書に開示された教示の第31の任意的なインスタンスによると、第14~第30のいずれかのインスタンスによる方法であって、前記第1スクリプト条件のうちの1つ、一部、又は全部について、前記複数の基準コンポーネントのうちの1つ、一部、又は全部、及び/又は前記複数のサブ基準コンポーネントのうちの1つ、一部、又は全部は、各々、インプット又はサブインプットデータアイテムとして、所定のブロックチェーン公開鍵に対応する各々のブロックチェーン署名を必要とすることが提供される。
本願明細書に開示された教示の第32の任意的なインスタンスによると、第14~第31のインスタンスのいずれかによる方法であって、前記第1スクリプト条件のうちの1つ、一部、又は全部について、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、前記カウンタを異なる数だけインクリメントするよう構成されるカウンタスクリプトコンポーネントに関連付けられることが提供される。
本願明細書に開示された教示の第33の任意的なインスタンスによると、第14~第32のインスタンスのいずれかによる方法であって、前記インプットスクリプトの中の各インプットデータアイテムは、第1又は第2要素を含み、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、各々のチェックコンポーネントに関連付けられ、各チェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含むインプットデータアイテムに対応する基準コンポーネントのみを実行する、
よう構成されることが提供される。
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含むインプットデータアイテムに対応する基準コンポーネントのみを実行する、
よう構成されることが提供される。
本願明細書に開示された教示の第34の任意的なインスタンスによると、第33のインスタンスによる方法であって、各第1スクリプト条件は、実行された基準スクリプトが前記インプットスクリプトのインプットデータにより満たされない場合に、前記第1トランザクションを無効にするよう構成されることが提供される。
本願明細書に開示された教示の第35の任意的なインスタンスによると、第14~第34のインスタンスのいずれかによる方法であって、前記各々の基準及び/又はサブ基準を前記第2パーティへ送信するステップを含むことが提供される。
本願明細書に開示された教示の第36の任意的なインスタンスによると、第14~第35のインスタンスのいずれかによる方法であって、前記第1トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップを含むことが提供される。
本願明細書に開示される教示の第37のインスタンスによると、第1パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第14~第36のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第14~第36のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
本願明細書に開示された教示の第38のインスタンスによると、コンピュータ可読記憶装置上に具現化され、第1パーティのコンピュータ機器上で実行すると第14~第36のいずれかのインスタンスの方法を実行するよう構成される、コンピュータプログラムが提供される。
本願明細書に開示された教示の第39の任意的なインスタンスによると、コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1及び第2パーティは、各々、前記ブロックチェーンに関連付けられ、前記ブロックチェーンは第1トランザクションを含み、前記第1トランザクションは、前記デジタルアセットの前記量をロックするアウトプットを含み、及び第1スクリプト条件を含み、前記第1スクリプト条件は複数の基準コンポーネントを含み、各基準コンポーネントは各々のインプットデータアイテムを含み、前記方法は、前記第2パーティにより実行され、
第1インプットスクリプトコンポーネントを含む第2トランザクションを生成するステップであって、前記第1インプットスクリプトコンポーネントは、
i)複数のインプットデータアイテムであって、各インプットデータアイテムは、前記第1スクリプト条件の各々の基準コンポーネントに対応する、複数のインプットデータアイテム、
ii)シークレット値、
iii)前記第1パーティの所定のデジタル署名、及び
iv)前記第2パーティの書影の署名、を含む、ステップと、
前記第2トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含む方法が提供される。
第1インプットスクリプトコンポーネントを含む第2トランザクションを生成するステップであって、前記第1インプットスクリプトコンポーネントは、
i)複数のインプットデータアイテムであって、各インプットデータアイテムは、前記第1スクリプト条件の各々の基準コンポーネントに対応する、複数のインプットデータアイテム、
ii)シークレット値、
iii)前記第1パーティの所定のデジタル署名、及び
iv)前記第2パーティの書影の署名、を含む、ステップと、
前記第2トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含む方法が提供される。
本願明細書に開示された教示の第40の任意的なインスタンスによると、第39のインスタンスによる方法であって、前記第1トランザクションは、第2及び第3スクリプト条件を含み、
前記第2トランザクションは、
前記第2スクリプト条件に対して実行されると、偽として評価するよう構成される第2インプットスクリプトコンポーネントと、
前記第3スクリプト条件に対して実行されると、偽として評価するよう構成される第3インプットスクリプトコンポーネントと、
を含むことが提供される。
前記第2トランザクションは、
前記第2スクリプト条件に対して実行されると、偽として評価するよう構成される第2インプットスクリプトコンポーネントと、
前記第3スクリプト条件に対して実行されると、偽として評価するよう構成される第3インプットスクリプトコンポーネントと、
を含むことが提供される。
本願明細書に開示された教示の第41の任意的なインスタンスによると、第39又は40のインスタンスによる方法であって、前記第1スクリプト条件は、複数のチェックコンポーネントを含み、各チェックコンポーネントは、前記複数の基準コンポーネントのうちの各々の1つの基準コンポーネントに関連付けられ、
各々のチェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含むインプットデータアイテムに対応する前記基準スクリプトコンポーネントのみを実行する、よう構成され、
各インプットデータアイテムは、前記第1データ要素又は第2の異なるデータ要素を含むことが提供される。
各々のチェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含むインプットデータアイテムに対応する前記基準スクリプトコンポーネントのみを実行する、よう構成され、
各インプットデータアイテムは、前記第1データ要素又は第2の異なるデータ要素を含むことが提供される。
本願明細書に開示された教示の第42の任意的なインスタンスによると、第39~第41のいずれかのインスタンスによる方法であって、前記インプットデータアイテムのうちの1つ、一部、又は全部が各々のデジタル署名を含むことが提供される。
本願明細書に開示される教示の第43のインスタンスによると、第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第39~第42のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは第39~第42のインスタンスのいずれかの方法を実行するよう構成される、コンピュータ機器が提供される。
本願明細書に開示された教示の第44のインスタンスによると、コンピュータ可読記憶装置上に具現化され、第2パーティのコンピュータ機器上で実行すると第39~第42のいずれかのインスタンスの方法を実行するよう構成される、コンピュータプログラムが提供される。
本願明細書に開示された教示の第45の任意的なインスタンスによると、ブロックチェーンに包含するための第1トランザクションであって、前記第1トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1トランザクションは、1つ以上のコンピュータ可読データ媒体上に具現化され、実行可能コードを含み、前記コードは複数のアウトプットスクリプトを含み、各アウトプットスクリプトは、前記デジタルアセットの各々の量をロックし、各々の第1、第2、及び第3スクリプト条件を含み、各第1スクリプト条件は、
i)複数の基準コンポーネントであって、各基準コンポーネントは各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、
ii)複数のカウンタコンポーネントであって、各基準コンポーネントは前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
前記コードは、各々のアウトプットスクリプトが第2トランザクションのインプットスクリプトと一緒に、ブロックチェーンネットワークのノードにおいて実行されると、
前記各々の第1スクリプト条件が実行される場合に、各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転し、
前記各々の第2スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの所定のデジタル署名と前記第2パーティの所定のデジタル署名を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転し、
前記各々の第3スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの前記所定のデジタル署名とシークレット値を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転する、
よう構成される、第1トランザクションが提供される。
i)複数の基準コンポーネントであって、各基準コンポーネントは各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、
ii)複数のカウンタコンポーネントであって、各基準コンポーネントは前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
前記コードは、各々のアウトプットスクリプトが第2トランザクションのインプットスクリプトと一緒に、ブロックチェーンネットワークのノードにおいて実行されると、
前記各々の第1スクリプト条件が実行される場合に、各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転し、
前記各々の第2スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの所定のデジタル署名と前記第2パーティの所定のデジタル署名を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転し、
前記各々の第3スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの前記所定のデジタル署名とシークレット値を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転する、
よう構成される、第1トランザクションが提供される。
本願明細書に開示された教示の第46の任意的なインスタンスによると、第45のインスタンスによる第1トランザクションを格納しているコンピュータ可読記憶媒体が提供される。
本願明細書に開示された教示の第47の任意的なインスタンスによると、第13のインスタンスによる第1トランザクションを格納しているコンピュータ可読記憶媒体が提供される。
本願明細書に開示される教示の別のインスタンスによると、前記第1パーティ及び前記第2パーティの動作を含む方法が提供され得る。
本願明細書に開示される教示の別のインスタンスによると、前記第1パーティ及び前記第2パーティのコンピュータ機器を含むシステムが提供され得る。
本願明細書に開示される教示の別のインスタンスによると、前記第1及び第2トランザクションを含むトランザクションのセットが提供され得る。
開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
Claims (47)
- コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記方法は、前記第1パーティにより実行され、
前記デジタルアセットの前記量をロックするアウトプットを含む第1トランザクションを生成するステップを含み、
前記アウトプットは、複数の基準コンポーネントを含むアウトプットスクリプトであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタスクリプトコンポーネントであって、各基準コンポーネントが前記カウンタスクリプトコンポーネントのうちの1つに関連付けられる、複数のカウンタスクリプトコンポーネントと、を含み、
前記アウトプットスクリプトは、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも所定数までインクリメントされる必要がある、方法。 - 前記第1トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップ、を含む請求項1に記載の方法。
- 前記複数の基準コンポーネントの合計数は、前記所定数以上である、請求項1又は2に記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、異なる各々の基準を定義する、請求項1~3のいずれかに記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、複数のサブ基準コンポーネントを含み、各サブ基準コンポーネントは、各々のサブインプットデータアイテムを必要とする、請求項1~4のいずれかに記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部、及び/又は、前記複数のサブ基準コンポーネントのうちの1つ、一部、又は全部は、各々、インプット又はサブインプットデータアイテムとして、所定のブロックチェーン公開鍵に対応する各々のブロックチェーン署名を必要とする、請求項1~5のいずれかに記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、前記カウンタを異なる数だけインクリメントするよう構成されるカウンタスクリプトコンポーネントに関連付けられる、請求項1~6のいずれかに記載の方法。
- 前記インプットスクリプトの中の各インプットデータアイテムは、第1又は第2要素を含み、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、各々のチェックコンポーネントに関連付けられ、各チェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記インプットデータアイテムが前記第1要素を含む場合にのみ、前記関連付けられた基準コンポーネントを実行する、
よう構成される、請求項1~7のいずれかに記載の方法。 - 各アウトプットスクリプトは、実行された基準コンポーネントが前記インプットスクリプトのインプットデータにより満たされない場合に、前記第1トランザクションを無効化するよう構成される、請求項8に記載の方法。
- 前記各々の基準及び/又はサブ基準を、前記第2パーティへ送信するステップ、を含む請求項1~9のいずれかに記載の方法。
- 第1パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは請求項1~10のいずれかに記載の方法を実行するよう構成される、コンピュータ機器。 - コンピュータ可読記憶装置上に具現化され、第1パーティのコンピュータ機器上で実行されると請求項1~10のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
- ブロックチェーンに包含するための第1トランザクションであって、前記第1トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1トランザクションは、1つ以上のコンピュータ可読データ媒体上に具現化され、実行可能コードを含み、前記コードは、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを必要とする、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
前記コードは、ブロックチェーンネットワークのノードにおいて、第2トランザクションのインプットスクリプトと一緒に実行されると、
各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、
前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転する、
よう構成される、第1トランザクション。 - コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1及び第2パーティは、それおzれ、前記ブロックチェーンに関連付けられ、前記方法は、前記第1パーティにより実行され、
複数のアウトプットを含む第1トランザクションを生成するステップを含み、
各アウトプットは、前記デジタルアセットの各々の量をロックし、各々の第1スクリプト条件を含み、
各第1スクリプト条件は、複数の基準コンポーネントであって、各基準コンポーネントが各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、複数のカウンタコンポーネントであって、各基準コンポーネントが前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
各第1アウトプットスクリプト条件は、第2トランザクションのインプットスクリプトと一緒に実行されると、
i)各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、カウンタをインクリメントし、
ii)前記インプットスクリプトによりアンロックされるために、前記カウンタが少なくとも各々の所定数までインクリメントされる必要があり、
前記第1スクリプト条件のうちの1つ、一部、又は全部は、前記カウンタが異なる所定数までインクリメントされることを必要とする、方法。 - 前記第1トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップ、を含む請求項14に記載の方法。
- 前記アウトプットのうちの1つ、一部、又は全部は、前記デジタルアセットの異なる各々の量をロックする、請求項14又は15に記載の方法。
- 各々のアウトプットによりロックされる前記デジタルアセットの各々の量は、各々の第1スクリプト条件が前記カウンタをインクリメントすることを要求する各々の所定数に基づく、請求項14~16のいずれかに記載の方法。
- 前記インプットスクリプトによりアンロックされるために、各第1スクリプト条件は、前記インプットスクリプトが、前記第1パーティのデジタル署名及び/又は前記第2パーティのデジタル署名を含むことを要求するよう構成される、請求項14~17のいずれかに記載の方法。
- 各アウトプットについて、各々の第2トランザクションを生成するステップであって、各第2トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名を含む、ステップと、
各第2トランザクションを前記第2パーティへ送信するステップと、
を含む請求項18に記載の方法。 - 各第2トランザクションは、異なるロックタイムを含み、
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成される、請求項19に記載の方法。 - 各第1スクリプト条件は、シークレット値のハッシュを含み、
前記インプットスクリプトによりアンロックされるために、各第1スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを必要とするよう構成される、請求項14~20のいずれかに記載の方法。 - 各アウトプットは、各々の第2スクリプト条件を含み、前記第2スクリプト条件は、第3トランザクションのインプットスクリプトと一緒に実行されると、該インプットスクリプトによりアンロックされるために、前記第3トランザクションの前記インプットスクリプトが前記第1パーティの所定のデジタル署名と前記第2パーティの所定のデジタル署名を含むことを要求する、請求項14~21のいずれかに記載の方法。
- 各アウトプットについて、各々の第3トランザクションを前記第2パーティから受信するステップであって、各第3トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名と前記第2パーティの前記所定のデジタル署名を含む、ステップと、
を含む請求項22に記載の方法。 - 各第3トランザクションは、異なるロックタイムを含み、
各々のロックタイムは、各々の第2トランザクションが各々の所定の時間の後まで、前記ブロックチェーンに包含されるのを防ぐよう構成される、請求項23に記載の方法。 - 各アウトプットは、前記第2トランザクションのうちの異なる1つ、及び前記第3トランザクションのうちの異なる1つに関連付けられ、
各アウトプットについて、前記第3トランザクションの各々のロックタイムは、前記第2トランザクションが前記ブロックチェーンに包含できる時間より後の時間まで、前記第3トランザクションが前記ブロックチェーンに包含されるのを防ぐ、少なくとも請求項20に従属する請求項24に記載の方法。 - 前記アウトプットのうちの1つ、一部、又は全部は、各々の第3スクリプト条件を含み、
各第3スクリプト条件は、第4トランザクションのインプットスクリプトと一緒に実行されると、前記インプットスクリプトによりアンロックされるために、前記第4トランザクションの前記インプットスクリプトが、前記第1パーティの所定のデジタル署名を含むことを要求するよう構成される、請求項14~25のいずれかに記載の方法。 - 各第3スクリプト条件は、前記シークレット値のハッシュを含み、
前記第4トランザクションの前記インプットスクリプトによりアンロックされるために、各第3スクリプト条件は、前記インプットスクリプトが前記シークレット値を含むことを必要とするよう構成される、請求項21に従属する請求項26に記載の方法。 - 前記シークレット値を取得するステップと、
前記アウトプットの1つ、一部、又は全部について、各々の第4トランザクションを生成するステップであって、各第4トランザクションの前記インプットスクリプトは、前記第1パーティの前記所定の署名と前記シークレット値を含む、ステップと、
各第4トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含む請求項27に記載の方法。 - 前記複数の基準コンポーネントの合計数は、前記各々の所定数以上である、請求項14~28のいずれかに記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、異なる各々の基準を定義する、請求項14~29のいずれかに記載の方法。
- 前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、複数のサブ基準コンポーネントを含み、各サブ基準コンポーネントは、各々のサブインプットデータアイテムを必要とする、請求項14~30のいずれかに記載の方法。
- 前記第1スクリプト条件のうちの1つ、一部、又は全部、記複数の基準コンポーネントのうちの1つ、一部、又は全部、及び/又は、前記複数のサブ基準コンポーネントのうちの1つ、一部、又は全部は、各々、インプット又はサブインプットデータアイテムとして、所定のブロックチェーン公開鍵に対応する各々のブロックチェーン署名を必要とする、請求項14~31のいずれかに記載の方法。
- 前記第1スクリプト条件のうちの1つ、一部、又は全部、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、前記カウンタを異なる数だけインクリメントするよう構成されるカウンタスクリプトコンポーネントに関連付けられる、請求項14~32のいずれかに記載の方法。
- 前記インプットスクリプトの中の各インプットデータアイテムは、第1又は第2要素を含み、前記複数の基準コンポーネントのうちの1つ、一部、又は全部は、各々のチェックコンポーネントに関連付けられ、各チェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含む前記インプットデータアイテムに対応する前記基準スクリプトコンポーネントのみを実行する、
よう構成される、請求項14~33のいずれかに記載の方法。 - 各第1スクリプト条件は、実行された基準スクリプトが前記インプットスクリプトのインプットデータにより満たされない場合に、前記第1トランザクションを無効化するよう構成される、請求項34に記載の方法。
- 前記各々の基準及び/又はサブ基準を、前記第2パーティへ送信するステップ、を含む請求項14~35のいずれかに記載の方法。
- 第1パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは請求項14~36のいずれかに記載の方法を実行するよう構成される、コンピュータ機器。 - コンピュータ可読記憶装置上に具現化され、第14パーティのコンピュータ機器上で実行されると請求項1~36のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
- コンピュータにより実施される、ブロックチェーンのトランザクションを生成する方法であって、前記トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1及び第2パーティは、各々、前記ブロックチェーンに関連付けられ、前記ブロックチェーンは第1トランザクションを含み、前記第1トランザクションは、前記デジタルアセットの前記量をロックするアウトプットを含み、及び第1スクリプト条件を含み、前記第1スクリプト条件は複数の基準コンポーネントを含み、各基準コンポーネントは各々のインプットデータアイテムを含み、前記方法は、前記第2パーティにより実行され、
第1インプットスクリプトコンポーネントを含む第2トランザクションを生成するステップであって、前記第1インプットスクリプトコンポーネントは、
i)複数のインプットデータアイテムであって、各インプットデータアイテムは、前記第1スクリプト条件の各々の基準コンポーネントに対応する、複数のインプットデータアイテム、
ii)シークレット値、
iii)前記第1パーティの所定のデジタル署名、及び
iv)前記第2パーティの書影の署名、を含む、ステップと、
前記第2トランザクションを、前記ブロックチェーンに包含するために、前記ブロックチェーンに関連付けられる1つ以上のノードへ送信するステップと、
を含む方法。 - 前記第1トランザクションは、第2及び第3スクリプト条件を含み、
前記第2トランザクションは、
前記第2スクリプト条件に対して実行されると、偽として評価するよう構成される第2インプットスクリプトコンポーネントと、
前記第3スクリプト条件に対して実行されると、偽として評価するよう構成される第3インプットスクリプトコンポーネントと、
を含む、請求項39に記載の方法。 - 前記第1スクリプト条件は、複数のチェックコンポーネントを含み、各チェックコンポーネントは、前記複数の基準コンポーネントのうちの各々の1つの基準コンポーネントに関連付けられ、
各々のチェックコンポーネントは、前記インプットスクリプトと一緒に実行されると、
i)各インプットデータアイテムが前記第1要素を含むかどうかを決定し、
ii)前記第1要素を含むインプットデータアイテムに対応する前記基準スクリプトコンポーネントのみを実行する、よう構成され、
各インプットデータアイテムは、前記第1データ要素又は第2の異なるデータ要素を含む、請求項39又は40に記載の方法。 - 前記インプットデータアイテムのうちの1つ、一部、又は全部は、各々のデジタル署名を含む、請求項39~41のいずれかに記載の方法。
- 第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは請求項39~42のいずれかに記載の方法を実行するよう構成される、コンピュータ機器。 - コンピュータ可読記憶装置上に具現化され、第2パーティのコンピュータ機器上で実行されると請求項39~42のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
- ブロックチェーンに包含するための第1トランザクションであって、前記第1トランザクションは、デジタルアセットの量を第1パーティから第2パーティへ移転するためのものであり、前記第1トランザクションは、1つ以上のコンピュータ可読データ媒体上に具現化され、実行可能コードを含み、前記コードは複数のアウトプットスクリプトを含み、各アウトプットスクリプトは、前記デジタルアセットの各々の量をロックし、各々の第1、第2、及び第3スクリプト条件を含み、各第1スクリプト条件は、
i)複数の基準コンポーネントであって、各基準コンポーネントは各々のインプットデータアイテムを要求する、複数の基準コンポーネントと、
ii)複数のカウンタコンポーネントであって、各基準コンポーネントは前記カウンタコンポーネントのうちの1つに関連付けられる、複数のカウンタコンポーネントと、を含み、
前記コードは、各々のアウトプットスクリプトが第2トランザクションのインプットスクリプトと一緒に、ブロックチェーンネットワークのノードにおいて実行されると、
前記各々の第1スクリプト条件が実行される場合に、各々の基準コンポーネントが前記インプットスクリプトの各々のインプットデータアイテムにより満たされる度に、前記ノードのメモリに格納されたカウンタをインクリメントし、前記カウンタが少なくとも所定数までインクリメントされることに基づき、前記デジタルアセットの前記量を前記第2パーティへ移転し、
前記各々の第2スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの所定のデジタル署名と前記第2パーティの所定のデジタル署名を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転し、
前記各々の第3スクリプト条件が実行される場合に、前記インプットスクリプトが前記第1パーティの前記所定のデジタル署名とシークレット値を含むかどうかを決定し、前記デジタルアセットの前記量を前記第1パーティへ移転する、
よう構成される、第1トランザクション。 - 請求項45に記載の第1トランザクションを格納しているコンピュータ可読記憶媒体。
- 請求項13に記載の第1トランザクションを格納しているコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1913385.9A GB2587201A (en) | 2019-09-17 | 2019-09-17 | Multi-criteria blockchain protocol |
GB1913385.9 | 2019-09-17 | ||
PCT/IB2020/057764 WO2021053425A1 (en) | 2019-09-17 | 2020-08-18 | Multi-criteria blockchain protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022548173A true JP2022548173A (ja) | 2022-11-16 |
JPWO2021053425A5 JPWO2021053425A5 (ja) | 2023-07-27 |
Family
ID=68315340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022517257A Pending JP2022548173A (ja) | 2019-09-17 | 2020-08-18 | マルチ基準ブロックチェーンプロトコル |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220309504A1 (ja) |
EP (1) | EP4032223A1 (ja) |
JP (1) | JP2022548173A (ja) |
KR (1) | KR20220059547A (ja) |
CN (1) | CN114531941A (ja) |
GB (1) | GB2587201A (ja) |
WO (1) | WO2021053425A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11777712B2 (en) * | 2019-03-22 | 2023-10-03 | International Business Machines Corporation | Information management in a database |
EP4401187A4 (en) | 2022-05-16 | 2024-09-25 | Lg Energy Solution Ltd | NON-AQUEOUS ELECTROLYTE AND LITHIUM SECONDARY BATTERY COMPRISING SAME |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099999B2 (en) * | 2003-09-30 | 2006-08-29 | International Business Machines Corporation | Apparatus and method for pre-fetching data to cached memory using persistent historical page table data |
GB201707168D0 (en) * | 2017-05-05 | 2017-06-21 | Nchain Holdings Ltd | Computer-implemented system and method |
US20190095879A1 (en) * | 2017-09-26 | 2019-03-28 | Cornell University | Blockchain payment channels with trusted execution environments |
WO2019104250A1 (en) * | 2017-11-22 | 2019-05-31 | SALT Lending Holdings, Inc. | Incrementally perfected digital asset collateral wallet |
US11244309B2 (en) * | 2017-11-22 | 2022-02-08 | Cornell University | Real-time cryptocurrency exchange using trusted hardware |
US10773381B2 (en) * | 2017-11-30 | 2020-09-15 | Skygrid, Llc | Secure distributed system using blockchain for self-policing of autonomous agents |
US20190172026A1 (en) * | 2017-12-02 | 2019-06-06 | Alchemy Limited LLC | Cross blockchain secure transactions |
CN109840767B (zh) * | 2018-01-09 | 2021-06-11 | 中国科学院计算技术研究所 | 基于区块链技术的多方公平合约存证方法和系统 |
GB201800818D0 (en) * | 2018-01-18 | 2018-03-07 | Nchain Holdings Ltd | Computer-implemented system and method |
-
2019
- 2019-09-17 GB GB1913385.9A patent/GB2587201A/en not_active Withdrawn
-
2020
- 2020-08-18 KR KR1020227012490A patent/KR20220059547A/ko unknown
- 2020-08-18 WO PCT/IB2020/057764 patent/WO2021053425A1/en unknown
- 2020-08-18 EP EP20761634.3A patent/EP4032223A1/en active Pending
- 2020-08-18 US US17/760,728 patent/US20220309504A1/en active Pending
- 2020-08-18 JP JP2022517257A patent/JP2022548173A/ja active Pending
- 2020-08-18 CN CN202080065448.5A patent/CN114531941A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB201913385D0 (en) | 2019-10-30 |
KR20220059547A (ko) | 2022-05-10 |
CN114531941A (zh) | 2022-05-24 |
GB2587201A (en) | 2021-03-24 |
EP4032223A1 (en) | 2022-07-27 |
WO2021053425A1 (en) | 2021-03-25 |
US20220309504A1 (en) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022541323A (ja) | ブロックチェーントランザクションを利用したデジタル契約 | |
JP2022533753A (ja) | 知識証明 | |
JP2022534047A (ja) | ブロックチェーントランザクションの中のインスクリプト関数 | |
JP7543313B2 (ja) | 複数インプットトランザクション | |
JP2022533751A (ja) | 知識証明 | |
US20220337427A1 (en) | Cryptographically linked identities | |
JP2023515368A (ja) | ブロックチェーンネットワークと共に使用される証明サービス | |
JP2023528649A (ja) | ファイル検証システムおよび方法 | |
KR20230101883A (ko) | 머클 증명 엔티티 | |
JP2022533777A (ja) | プルーフ・オブ・ワーク | |
JP2023532211A (ja) | ブロックチェーン上の合意 | |
JP2022533752A (ja) | 知識証明 | |
KR20230101843A (ko) | 머클 증명 엔티티 | |
JP2022548173A (ja) | マルチ基準ブロックチェーンプロトコル | |
JP2022549001A (ja) | 分割可能トークン | |
JP2023529468A (ja) | ブロックチェーンアドレスの生成 | |
JP2022533845A (ja) | 知識証明 | |
JP2023513950A (ja) | 階層化ネットワーク | |
CN117652124A (zh) | 区块链区块和存在证明 | |
JP2023529467A (ja) | カスタムトランザクションスクリプト | |
CN117561697A (zh) | 部分基于sha的哈希函数 | |
JP2023513951A (ja) | 階層化ネットワークの接続の適応 | |
JP7551656B2 (ja) | サイドチャネルを使用する方法 | |
US20240313952A1 (en) | Message exchange system | |
KR20230137447A (ko) | 블록체인 트리 구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230719 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240910 |