JP2023138978A - 宣言的スマート契約 - Google Patents
宣言的スマート契約 Download PDFInfo
- Publication number
- JP2023138978A JP2023138978A JP2023106206A JP2023106206A JP2023138978A JP 2023138978 A JP2023138978 A JP 2023138978A JP 2023106206 A JP2023106206 A JP 2023106206A JP 2023106206 A JP2023106206 A JP 2023106206A JP 2023138978 A JP2023138978 A JP 2023138978A
- Authority
- JP
- Japan
- Prior art keywords
- invocation
- block
- execution
- verifier
- declarative
- 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
- 230000004044 response Effects 0.000 claims abstract description 88
- 230000000694 effects Effects 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000004913 activation Effects 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000001994 activation Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000007480 spreading Effects 0.000 description 4
- 238000003892 spreading Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000010304 firing Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Development Economics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Prostheses (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Storage Device Security (AREA)
Abstract
【課題】電子取引で用いる一連の取引ブロックの内容のセキュリティを確保する方法及びコンピュータソフトウェアを提供する。【解決手段】ブロックチェーン内のブロックを当該ブロックチェーンに追加する方法は、主体に一つ前のブロックに対応する情報を受信させるステップと、主体に所与の入力に対してスマート契約実行の宣言的発動を受信させ、宣言的発動が実行に関連する結果及び他の関連データを宣言するステップと、主体に発動の構文的有効性を検証させるステップと、主体に、発動の構文的有効性を検証したことに応答して宣言的発動をブロックに組み込ませるステップと、を含んでいる。結果は、スマート契約実行の正味効果、スマート契約実行後に生じた状態及び実行ステップ数を指定することができる。他の関連データは、宣言的発動の呼出者、時間情報、ブロック情報及び/又は支払うべき対価を指定することができる。【選択図】図2
Description
本出願は電子取引の分野に関し、特に電子取引で用いる一連の取引ブロックの内容のセキュリティを確保する分野に関する。
スマート契約とは、ユーザーと同様に、自身の資金を所有できるコンピュータプログラムであると考えてよい。このような契約Cは、恐らく毎回の発動後に変更される、自身の保持された(計算上の)状態、及び自身の識別子、例えばストリングH(C)、但しHはハッシュ関数、を有していてよい。簡潔のため、当該識別子をそのままCと表記する。読者は、Cがプログラム自体であるか又は識別子であるかを容易に判別することができる。好適には、スマート契約Cは通常のユーザーから容易に区別できる。プレーヤーは、スマート契約又は通常のユーザーのいずれかを意味する。
スマート契約Cの実行は、一人以上の適切なユーザーにより発動することができる。簡潔のため、但し一般性を一切失うことを意図することなく、本明細書ではCが単一ユーザーiにより発動されるものと仮定する(脚注1:要するに、Cが複数のユーザーにより発動できる場合、往々にして一人のユーザーが最初にCを実行し、別の適切なユーザーがCを発動する前に、Cの保持された状態を変更する。Cが無状態の場合、適切なユーザーの順序は重要ではない。そうでない場合、例えば二人の適切なユーザーが同時に独立にCを発動したならば、一方が二つの実行の順序を選択して、第2の実行を開始する前に、第1の実行が「終了」するまで待つことができる。当業者には、複数のユーザーによりCが発動された場合のみ、実際には「システムにより」実行されるようにCを書くことができ、且つこれらの契約を発明者らの技術で扱えることが理解されよう。)
iを、Cのシステムの実行を発動できるユーザーとする。ユーザーiはデジタル署名によりCを発動する。そのようなiの署名された発動は、Cに加え、入力(input)、及び対価(fee)を指定することができる。以下に説明する。
・inputは、C実行する際の特定の入力の詳細を示す。無論、既定値入力、例えば、Cの現在状態、γC(実際に入力と考えてよい)及びシステムの大域的状態(例えば、所与のブロックで各プレーヤーが所有する金額)等の追加的な入力があってよい。
・feeは、「Cの実行に要した計算コストを補償するシステム」に対してiが支払うべき金額を含んでいる。
・feeは、「Cの実行に要した計算コストを補償するシステム」に対してiが支払うべき金額を含んでいる。
ユーザーiはまた、Cを発動する際に、何らかの追加的な情報を指定することができる。例えば、所与のブロック、従ってブロックチェーン内の所与の「スナップショット」を指定すること、又は契約Cの実行が所与のブロック又はブロックの間隔に影響を及ぼすことができる。また、Cがこれまでのブロックチェーンの履歴全体を考慮に入れることができると考えてもよい。要するに、追加的な(恐らくは暗示的)入力もあり得る。
対価は、iが、他の任意の取引と同様に、自身の発動をブロックチェーンに含めるために払う必要がある金額も含んでいてよい。しかし、新規な本発明により軽減される問題に注目すべく、後者の従来型対価を無視することにする。
Cの実行における計算ステップ数は、実行されるマシンに依存する。従って、固定された(仮想)マシンM上でC(input)を計算する場合を考える。
Cの実行により一般に、新たに保持された状態
を生成し、数人のプレーヤー、x,y,...,が所有する、次式で表す金額を増減させる。
ユーザーiにより署名されたCの発動は、所与のブロック内のブロックチェーンに入ることができるのは、iが当該時点でfee、すなわちiの発動時に指定された対価以上の資金量を所有している場合だけである。
従来の(例えば、一時的な)方法は、発動が実際に一回の実行に対応するのを防止するために用いる。このような方法は、目下の問題及び発明にとって重要ではないため、一般性を一切失うことを意図することなく、本明細書では無視する。他のあらゆる種類の発明とは無関係な詳細事項についても同様である。
iの発動がブロックチェーンのあるブロックに入ったならば、ユーザーのクラスUの各ユーザーuは、feeがカバーするステップの金額に対してCを(仮想マシンM上で、Cが到達した最後の保持された状態を用いて)実行し、iが所有する金額から対価を減算することにより自身のブロックチェーンデータのバージョンを更新して、実行が適切に終了したならば、Cの実行に影響されたプレーヤーが所有する(C自体が所有する金額を恐らく含む)金額を(再び、ブロックチェーンの自身のバージョンで)変更する。そのような全てのユーザーによるCの実行をCのシステム実行と称する場合がある。典型的に、クラスUは、全てのユーザー又は極めて多くのユーザー(例えば、ブロックチェーン内における新規の有効なブロックの生成に寄与したい全てのユーザー)を含んでいる。
ユーザー数が多い場合、ステップ数が若干少なくてもシステムの総コストが極めて大きくなる場合がある。これは、ステップ数は全く多くないにもかかわらず、発動者により支払うべき対価も極めて高いのに違いないことを示唆している。この状況において、ブロックチェーンシステムでは、必要とするステップ数が少ないスマート契約だけを実行することに意味がある。これは惜しむべきである。システム内のユーザーは、無視できない数の計算ステップを要する多くのスマート契約の実行を発動することで利点が得られるが、自身が払うべき対価が膨大なため発動が阻害される。
本明細書に記述するシステムによれば、複数の取引が複数のブロックに編成された取引システムにおいて、一連の以前のブロックB0,B1,...,Br-1に対して新規ブロックBr及びBr+1を提供するステップは、ブロックBrがブロックBr-1における処理の状態と整合する取引の初期状態を示すことを確認した後でブロックBrを構築するステップと、ブロックBr+1がブロックBrにおける処理の状態と整合する取引の初期状態を示すことを確認した後でブロックBr+1を構築するステップと、複数の主体に、ブロックBr+1が構築された後でブロックBrの未検証の取引を検証させるステップとを含んでいる。これらの取引はスマート契約であってよい。ユーザーは、スマート契約のうち少なくとも1個に関する取引をブロックBrに記録する前提でブロックBrを構築することができる。ユーザーはまた、スマート契約に関する取引結果をブロックBrに記録することができる。ユーザーはまた、スマート契約にスマート契約の結果を得るのに要する実行ステップ数をブロックBrに記録することができる。ユーザーはまた、複数の主体がブロックBrの取引を検証することで受け取る対価を記録することができる。複数の主体はブロックBrの全てのユーザーの部分集合であってよい。複数の主体は、無作為に選択することができる。複数の主体を無作為に選択するステップは、時間情報、1個以上のブロックに関する情報、1個以上のブロックに含まれるデータ、又は1個以上のブロックから推論されたデータのうち少なくとも1個を含むデータに暗号ハッシュ関数を適用するステップを含んでいてよい。
本明細書に記述するシステムによれば更に、ブロックチェーン内のブロックBを当該ブロックチェーンに追加するステップは、主体に一つ前のブロックに対応する情報を受信させるステップと、主体に所与の入力に対してスマート契約実行の宣言的発動を受信させ、宣言的発動が実行に関連する結果及び他の関連データを宣言するステップと、主体に発動の構文的有効性を検証させるステップと、主体に、発動の構文的有効性を検証したことに応答して宣言的発動をブロックBに組み込ませるステップとを含んでいる。関連結果は、スマート契約実行の正味効果、スマート契約実行後の状態、及び実行ステップ数を指定することができる。他の関連データは、宣言的発動の呼出者、時間情報、ブロック情報、及び/又は支払うべき対価を指定することができる。宣言的発動が構文的に有効であるのは、対価が実行ステップ数に相応であり、且つ対価の支払者は対価を支払うのに充分な資産を有している場合であり、宣言的発動がブロックチェーンに出現したならば対価が支払われてよい。
本明細書に記述するシステムによれば更に、ブロックチェーン内の検証者の集合を、所与の入力に対してスマート契約実行の1個以上の宣言的発動の集合Sを検証すべく割り当て、当該宣言的発動が当該スマート契約実行の関連結果を宣言するステップにおいて、当該検証者が集合Sを受信するステップと、当該検証者がS内の宣言的発動のどれが意味論的に有効であるかを判定するステップと、当該検証者が意味論的に有効な1個以上の宣言的発動の認証された応答を提供するステップとを含んでいる。検証者の集合はSに基づいて所与の暗号関数を介して疑似乱数的に選択されていてよい。少なくとも一人の検証者が、当該少なくとも一人の検証者の秘密鍵を用いる計算を介して当該少なくとも一人の検証者が選択されていると判定することができ、当該少なくとも一人の検証者が他の関係者に対して、当該少なくとも一人の検証者が選択されたことを証明することができる。S内の発動Iが正しいと考えられるのは、Iが意味論的に正しいことを、Sに割り当てられた少なくとも所与の人数の検証者の応答が示している場合である。
本明細書に記述するシステムによれば更に、宣言的スマート契約発動の集合Sが既に登録され、検証者の集合がSに割り当てられていて、検証者がSの発動のうちどれが意味論的に有効であるかに関する認証された応答を提供しているブロックチェーンにおいて、Sの発動の評決をブロックチェーンに組み込むステップが、主体に検証者の認証された応答を受信させるステップと、主体にSの発動の正しさを推論させるステップと、主体にSの発動の正しさに関する最終評決をブロックチェーンに組み込ませるステップとを含んでいる。S内の発動Iの最終評決は、Sに割り当てられた少なくとも所与の人数の検証者の応答が、Iが意味論的に有効であることを示している場合Iが正しいことを示していてよい。Sの発動Iの最終評決が、Iが正しいことを示している場合、他のユーザーにスマート契約の状態を更新させ、スマート契約の実行の宣言された正味効果が発現したと思わせることができる。
本明細書に記述するシステムによれば更に、ブロックチェーン内のブロックBをブロックチェーンに追加するステップは、主体に一つ前のブロックに対応する情報を受信させるステップと、所与の入力に対してスマート契約実行の確約された宣言的発動を受信させ、確約された宣言的発動は、実行の少なくともいくつかの関連結果、実行の他の関連結果の確約、及び他の関連データを宣言するステップと、確約された宣言的発動の構文的有効性を確認させるステップと、確約された宣言的発動の構文的有効性の検証に応答して確約された宣言的発動をブロックBに組み込むステップとを含んでいる。関連結果は実行の正味効果、契約の実行後に生じた状態、及び/又はステップ数を指定することができ、他の関連データは発動の呼出者、時間情報、ブロック情報、及び/又は支払うべき対価を指定することができる。宣言的発動は構文的に有効なのは対価がステップ数に相応であり、且つ対価の支払者が対価を支払うのに充分な資産をシステム内に有している場合であり、発動がブロックチェーン内に出現したならば対価が支払われてよい。
本明細書に記述するシステムによれば更に、ブロックチェーン内の検証者の集合を、所与の入力に対してスマート契約の実行eを指定する少なくとも1個の確約された宣言的発動Iを含む宣言的発動の集合Sを検証すべく割り当て、Iがeの少なくともいくつかの関連結果rrに対する確約を含んでいるステップは、検証者が集合Sを受信するステップと、検証者が関連結果rrを計算すべく実行eを再構築するステップと、ある検証者が検証者のrrに対する個人化された確約を含む認証された応答を提供するステップとを含んでいる。割り当てられた検証者はSに基づいて、所与の暗号関数を介して疑似乱数的に選択されてよい。少なくとも一人の検証者が、当該少なくとも1人の検証者の秘密鍵を用いる計算を介して当該少なくとも1人の検証者が選択されていると判定することができ、当該少なくとも1人の検証者が他の関係者に対して、当該少なくとも1人の検証者が選択されていることを証明することができる。S内の確約された宣言的発動Iが正しいと考えられるのは、Sに割り当てられた少なくとも所与の人数の検証者の応答が、Iで確約された関連結果rrに対する個人化された確約を含む場合だけであってよい。
本明細書に記述するシステムによれば更に、宣言的スマート契約発動の集合Sが既に登録され、検証者の集合がSに割り当てられていて、集合Sが、所与の入力に対してスマート契約の実行eを指定する少なくとも1個の確約された宣言的発動Iを含み、Iがeの少なくともいくつかの関連結果rrに対する確約を含み、検証者がSの発動に関する認証された応答を提供しているブロックチェーンにおいて、Sの発動の評決をブロックチェーンに組み込むステップが、主体に検証者の認証された応答を受信させるステップと、主体にSの発動の正しさを推論させるステップと、主体にSの発動の正しさに関する最終評決をブロックチェーンに組み込ませるステップとを含んでいる。Sに割り当てられた少なくとも所与の人数の検証者の応答は、Iに対して確約されたものと同じ関連結果rrに対する個人化された確約を含んでいてよく、S内の確約された宣言的発動Iの最終評決は、Iが正しいことを示していてよい。Iの正しさの最終評決は、他のユーザーにスマート契約の状態を更新させ、スマート契約の実行eの正味効果が発現したと思わせることができる。
本明細書に記述するシステムによれば更に、非一時的コンピュータ可読媒体で提供されるコンピュータソフトウェアは、本明細書に記述するステップの一部又は全てを実現する実行可能コードを含んでいる。
スマート契約の代替技術:ブロックチェーンでスマート契約を実行する新技術を提示する。当該新技術は、従来のものと並行して実装することができ、従来技術で扱うには高価過ぎる契約のクラスを効率的に扱うことができる。
契約の巨大なクラス:新技術は特に、
・実行毎に変化する内部/計算状態(簡潔に「状態」)
・正味効果 例えば、新たな状態、関係者間の送金等
を簡潔に記述できるスマート契約に有用である。発明者らの技術により、
・膨大な計算ステップ及び
・極めて大量のメモリ
を要するスマート契約が扱えることを強調しておく。
・実行毎に変化する内部/計算状態(簡潔に「状態」)
・正味効果 例えば、新たな状態、関係者間の送金等
を簡潔に記述できるスマート契約に有用である。発明者らの技術により、
・膨大な計算ステップ及び
・極めて大量のメモリ
を要するスマート契約が扱えることを強調しておく。
実際、実行に用いるメモリは極めて大きいのに対し、次の実行用に保持される、例えば数個の有界な変数を含む状態情報は極めて簡潔な場合がある。重要な点は、無状態スマート契約は明らかにこの特性を満たし、極めて強力である。
無論、いくつかのスマート契約は、所与の要望を実現すべく有状態であることが必要な場合がある。発明者らの新技術の観点から、しかし、保持された状態のサイズを縮小すべくそのような契約のアーキテクチャを考えることがアプリケーション設計者の関心対象となろう。
ブロックチェーン不可知技術:本技術は新たに、Algorand技術の主な要素である暗号によりセキュリティ保証された自己選択技術である(秘密)暗号抽選を利用するものであり、Algorand技術は2017年5月4日出願のPCT特許出願PCT/US2017/031037号明細書に記述されており、本明細書で引用している。Algorand技術はまた、本明細書の別の節で引用している特許出願の全てではないにせよ大多数に記述されている。
しかし、他の利点にもかかわらず、スマート契約の新たなクラスを扱う発明者らの新技術を用いるために、Algorandを基礎となるブロックチェーンプラットフォームとして用いる必要はない。新技術はビットコイン、イーサラム等、他の任意のプラットフォームと合わせて用いることができる。
従って、以下で指摘するように、Algorandをブロックチェーンエンジンとして用いることでいくつかの追加的な利点がもたらされる。
本明細書に記述するシステムの実施形態について、以下に簡単に紹介する図面を参照しながらより詳細に説明する。
本明細書に記述するシステムは、スマート契約を含むブロックチェーンのブロックを検証するためにワークステーション(検証者)の効率を向上させ、必要とする計算量を減少させる機構を提供する。
図1を参照すると、インターネット等のデータネットワーク24に接続された複数の計算ワークステーション22a~22cを図示している。ワークステーション22a~22cは、本明細書の他の箇所でより詳細に記述するように、ネットワーク24を介して互いに通信して分散取引拡散及び検証を提供する。本システムは、ワークステーション22a~22cが互いに通信可能である前提で、本明細書に記述する機能を提供可能な任意の数のワークステーションを含んでいてよい。各々のワークステーション22a~22cは、本明細書の他の箇所でより詳細に説明するように、独立に処理を実行して、システム内の他のワークステーションの全てに取引を拡散し、取引/ブロックを検証して、検証者として動作することができる。
図2を参照すると、ブロックチェーン200は複数のブロック202~205を含んでいる。本明細書の他の箇所でより詳細に説明するように、各々のブロックは1個以上のスマート契約及び追加的情報を含んでいる。ブロック202はブロックチェーン200の最も古いブロックであり、ブロック203は次に古く、以下同様である。ブロック205はブロックチェーン200で最新のブロックである。ブロックチェーン200には任意の数のブロックがあってよい。ブロック202~205の各々は、一つ前のブロックを検査する情報を含んでおり、例えばブロック203はブロック202を検査する情報を含み、ブロック204はブロック203を検査する情報を含んでいる。従って、ブロックチェーン200内のブロック202~205のうち検査された最新のものは一つ前のブロックを直接検査し、他の全ての先行ブロックを間接的に検査する。本明細書の一実施形態において、ブロック202~205の各々は、ブロック202~205の一つ前の署名されたハッシュを含んでいるが、他の機構を用いて、当技術分野で公知の多くの従来型ブロックチェーン機構を含む先行ブロックを検査/確認することができる。また、ブロック202~205の1個以上を検証して、本明細書の他の箇所でより詳細に説明するように、ブロックの真正性に関する評決を含んでいてよい。ブロック202~205のうち1個以上の最新のものが最初は未検証であってよく、本明細書の他の箇所でより詳細に説明するように、その後検証及び認証されてもよい。
理想的には、スマート契約Cの実行を発動するための対価は、当該実行がシステムにもたらす計算の総コストに一致すべきである。しかし、
Cの実行にかかるシステムの総コストはいくらか?
Cの実行にかかるシステムの総コストはいくらか?
n人のユーザーがいて、且つ(所与のマシンMでの)Cの実行が#stepsを含んでいる場合、総システムコストは以下のように推定できる。
n×#steps(脚注2:ここでは全てのユーザーが新規ブロックの正しさを保証して当該ブロック含む全てのスマート契約を実行すると仮定している。いくつかのブロックチェーンプラットフォームにおいて、軽いノードではなく完全なノードだけがこの責任を有している。いずれにせよ、nは極めて大きくなり得る。)
n×#steps(脚注2:ここでは全てのユーザーが新規ブロックの正しさを保証して当該ブロック含む全てのスマート契約を実行すると仮定している。いくつかのブロックチェーンプラットフォームにおいて、軽いノードではなく完全なノードだけがこの責任を有している。いずれにせよ、nは極めて大きくなり得る。)
従って、nが大きければ、たとえ#stepsが若干小さくてもシステムの総コストが極めて高い場合がある。このことは、#stepsが全く高くなくても、Cの発動者iが支払うべき対価も極めて高い筈であることを意味する。この状況でブロックチェーンシステムにおいて、数ステップしか必要としないスマート契約だけを実行することに意味がある。これは残念である。システム内のユーザーは、無視できない数の計算ステップを要する多くのスマート契約の実行を発動することで利益が得られるが、支払うべき対価が過大なためにこれらの発動が阻害される恐れがある。
発明者らは、本発明の技術を特定の部分を選択して記述するのが便利であることを見出した。しかし、各部分自体が新規であって独自に利用でき、且つ他の部分への分解の仕方も本発明の範囲に含まれ得ることを理解されたい。
1.発動
スマート契約Cの宣言的発動Iは、(所与の入力/入力群及び初期状態に)Cの実行eに関連する結果及び他の関連データを指定する。
スマート契約Cの宣言的発動Iは、(所与の入力/入力群及び初期状態に)Cの実行eに関連する結果及び他の関連データを指定する。
関連結果は、eが到達した新たな状態及びeに対応するプレーヤー/金額調整を含んでいる。
関連データは、契約、状態、及び対象入力群の指標、すなわち(参照マシンMに関する)eのステップ数、又はそのようなステップ数の上限、発動がシステムにもたらすコスト、又はコストの上限を表す対価を含んでいてよい。(以下で分かるように、このコストは、全てのユーザーがeを実行した際に生じたコストよりも顕著に小さい場合がある。)
関連データはまた、少なくとも発動に責任を負う適切なユーザーi、及びシステムにもたらすコストを含む当該発動の責任をiが本当に引き受けることを示すiのデジタル署名(又は別形式の認証)の指標を含んでいてよい。そのようなユーザーiは実際に自身で、関連データを計算すべく実行したといえる。
関連データはまた、発動が公式に登録される、すなわちブロックチェーンに出現することが予想される1個のブロック又はブロックの集合の指標を含んでいてよい。(実際、ユーザーiは、発動がrでブロックチェーンに入らなければ責任を否認できる。)
簡潔のため、宣言的発動Iを単に発動と呼ぶ場合がある。
議論及び追加的詳細事項:上述のように、適切なユーザーiは自身のデジタル署名を拡散することにより入力inputに対してCを実行すべくシステムを発動する。しかし今回は、C、input、及び正しい対価に加え、iの署名もCの実行の効果及び実行に要するステップ数を認証する。(脚注3:上述の情報は若干冗長であり得る点に注意されたい。これは明快さを目的としており、一切の限定を意図していない。例えば、全長(又は単に効果の持続期間等)及び/又はステップ数等、他の量から、システムの現在の「価格表」を介して対価を決定することができる。同様に、ステップ数は、対価により上限を設定することができる。以下同様。全体を通じて、他の量から推論/推定できる上述の量は明示的に出現しないが、推論/推定される。)
サンプル設定において、iは最初にC(input)の実行eを計算するか、又は他の誰かが自分の代わりにeを計算することにより、実行eがどの結果を得るかを推測し、次いでこれらの結果を確認するようシステムに要求する。実行eにおいて、Cは保持された状態γC、すなわちブロックチェーンに記録されたCの実行シーケンスの後でCが到達した最新の保持された状態から開始される。
例えば、但し一般性を失うことなく、iは次式を計算して拡散し始める。
ここに
・iは発動ユーザーの識別子であり、iの署名から推論できる場合に主に便宜的に含まれる。
・Cは対象契約である。
・rは、本例では、iが発動の登録を予想する特定の単一ブロックであり、ブロックrに登録されていなければiは発動の責任を否認する。
・r’は恐らく将来のブロックの指標である。(例えば、発動された実行に関する最終評決がブロックr’によりブロックチェーンに出現した場合に、当該発動を破棄すべきであることを伝えるため。)
・inputはiがCの実行の発動を選択する入力iである。
・#stepsは(所与の参照マシンMでの)eの数である。
・γCは初期状態であり、
はeにより生じたCの新たに保持された状態である。
・
はeにより生じたプレーヤー/金額調整のペアである。
・feeは(当該特定で)iが支払うべき金額である。
・nは(以下に述べる)発動に対する検証者の集合の(予想)サイズである。
・tは整数であり、恐らくは発動が正しい(以下に述べる概念)と考えるべき発動に関するコヒーレントな応答の数を示すべく含まれている。
・iは発動ユーザーの識別子であり、iの署名から推論できる場合に主に便宜的に含まれる。
・Cは対象契約である。
・rは、本例では、iが発動の登録を予想する特定の単一ブロックであり、ブロックrに登録されていなければiは発動の責任を否認する。
・r’は恐らく将来のブロックの指標である。(例えば、発動された実行に関する最終評決がブロックr’によりブロックチェーンに出現した場合に、当該発動を破棄すべきであることを伝えるため。)
・inputはiがCの実行の発動を選択する入力iである。
・#stepsは(所与の参照マシンMでの)eの数である。
・γCは初期状態であり、
・
・feeは(当該特定で)iが支払うべき金額である。
・nは(以下に述べる)発動に対する検証者の集合の(予想)サイズである。
・tは整数であり、恐らくは発動が正しい(以下に述べる概念)と考えるべき発動に関するコヒーレントな応答の数を示すべく含まれている。
invokeiをC(input)のiの発動と呼び、
を宣言された実行概要と呼ぶ。
支払うべき対価は、(一切の限定を意図することなく)#steps、宣言された実行概要のサイズ、結果的に生じた状態
のサイズ等、何らかの選択された量に依存する場合がある。従って、状態が簡潔であるようにCを設計して、正味効果を簡潔に記述できる契約に集中することが重要である。対価はまた、発動が量n及びtのような量を含んでいれば、そのような量に依存する場合がある。対価はまた、まもなく述べる最終評決のサイズのような他の量に依存する場合がある。対価が実際に選択された量に対応する金額を以上である場合、対価が充分であると言う。
要するに、invokeiは本質的に、宣言された実行概要の正しさを検証し、次いで(a)Cの新規に保持された状態を更新して、(b)Cの実行に影響されたプレーヤーが所有する金額を調整することを求めるシステムに対するiの要求である。
このような発動Iがどのように登録されるかについて以下に述べる。
2.登録
発動Iは、通常の支払いとほぼ同様にブロックチェーンに入ることができる。発動Iは、新規ブロックを生成する役割を果たすあるユーザーuが発動Iをブロックに入れるまでユーザーからユーザーへ拡散されてよい。好適には、uはIが構文的に有効であるか否かを確認すべきである。
発動Iは、通常の支払いとほぼ同様にブロックチェーンに入ることができる。発動Iは、新規ブロックを生成する役割を果たすあるユーザーuが発動Iをブロックに入れるまでユーザーからユーザーへ拡散されてよい。好適には、uはIが構文的に有効であるか否かを確認すべきである。
構文的有効性の確認は何らかの観点な条件の確認を必要とする。例えば、Iに示されたCの初期状態が、ブロックチェーンに登録されたCの最後の発動に示された最終状態に一致すること、又は発動ユーザーが存在すれば実際に発動する資格を有していることの確認を含んでいてよい。従って、ブロックチェーンへの発動の登録はCの実行を必要としない。
構文的有効性はまた、Iを発動するユーザーiが、Iに指定された対価を支払うのに充分な資金を実際に所有していることの確認も含んでいてよい。実際、このような対価をiが自動的に支払うこともある。(対価の支払いの責任を負う契約を考えることもできる。その理由は例えば、発動を指示した契約であるからである。このような契約が所有する資金から対価が支払われたならば、構文的有効性は、当該契約が対価の支払いに充分な資金を有しているか否かの確認を含んでいてよい。この場合、そのような対価はIがブロックチェーンに入ったときに契約により自動的に支払うことができる。)
構文的有効性はまた、Iの対価が、Iが示すステップ数に対して充分であることの確認を含んでいてよい。
非構文的に有効なスマート契約発動を含むブロックは無効であると考えられる。従って、正直なuは、新規ブロックに構文上の無効な発動を含むべきではない。
構文的有効性はまた、Iが拡散する間に確認することができる。実際に、非構文的に有効なIを受信しているユーザーxはこれを他のユーザーに転送することができない。
議論察及び追加的な詳細事項:発動Iの構文検証が典型的に、対応する意味論的検証よりもはるかに軽いことに注意されたい。後者の用語は、Iにより発動された実行eを行うことが実際に、宣言された実行概要の生成を検証することを意味する。スマート契約の実行が多くのステップ数を要する場合があるため、このような意味論的検証は極めて長い場合がある。
従って、好適な実施形態においてブロック構築者uがIの意味論的有効性ではなく構文的有効性だけを検証することは主な利点である。典型的なブロックは数千個の取引を含み、例えば、それらのうち1,000個がスマート契約発動であって、それら各々を実行するのに平均1秒間の計算を要するものと仮定する。すると、他の全ての計算を無視したとしても、生成する新規ブロックの発動の意味論的有効性を検証しなければならない場合、uが新規ブロックを生成するのに少なくとも1,000秒(すなわち約16分)要するであろう。これは実際に、ブロック契約者が従来のスマート契約モデルで行うことが求められるものである。しかし、16分毎に1ブロックを生成するのは遅過ぎるであろう。新規ブロックを数秒で生成する方がはるかに好ましいであろう。
この遅さは、メッセージが拡散する間、ユーザーが他のユーザーへ転送する発動の意味論的有効性の確認を求められた場合、更に悪化する恐れがある。
好適な実施形態において、発動はブロックチェーンに入ったときに公式であると考えられ、システムが意味論的有効性を確認するために必要な労力を投入し始めるのはその時だけである。しかし、以下で分かるように、システムの全体的な効果は全く自己完結且つ実用的である。
3.割り当て
1個以上のブロックに登録された1個以上のスマート契約発動の集合Sがスマート契約の検証者の集合に割り当てられている。
1個以上のブロックに登録された1個以上のスマート契約発動の集合Sがスマート契約の検証者の集合に割り当てられている。
例えば、Sは所与のブロックに含まれた全てのスマート契約発動を含んでいてよい。代替的に、Sは単一の発動を含んでいてよい。さらに代替的に、所与のブロックの発動は数個の集合に分割されていてもよい。例えば、第1の集合は、所与のある整数kに対して、最初のk個のスマート発動を含んでいてよく、第2の集合は次のk個を含んでいてよく、以下同様である。(例外的に最後の集合はk個より少ない発動を含んでいてよい。)別の例として、1ブロックのスマート契約発動は、各集合の実行概要で宣言された総ステップ数を制御すべく、(例えばある標準的な仕方で)多くの集合に分割されていてよい。例えば、自身の宣言された実行概要のステップ数の和Xが所与の数Nを上回らないのに対し、Xと次の発動の宣言された実行概要のステップ数との和がNより大きければ、第1の集合はブロック内の最初のk個の発動を含んでいてよい。集合Sは、検証者の集合の(予想)サイズに依存する場合がある。例えば、Sは検証者集合の類似した(予想)サイズを指定する発動をグループ化することができる。
S、VSに割り当てられたスマート契約検証者の集合は充分に無作為且つ充分に多いため、ユーザーの所与の多数派が正直であると仮定して、選択された検証者の大多数が正直であることが高い確率で保証される。また、VSの検証者は、ブロックチェーンに従い、現在システムに所有する、又は所与の時点で所有する資金量に比例して選択することができる。この場合、より大きい重み、すなわち2票以上を有する意味でVSに属するように検証者を選択することができ、投票の大多数が正直者によることを保証したいと望むであろう。
また、集合VSは好適には確認可能である。すなわち(a)SからVSを計算可能である、又は(b)VSの検証者は自分が実際にVSのメンバーであることを判定可能であり、その場合、本当にそうであることを他人に対して証明することができる。
議論及び追加的詳細事項:本発明はスマート契約の各集合Sに比較的小さい検証者の集合VSを割り当て、当該検証者はS内の発動の宣言された実行概要の意味論的な正しさの検証に要する時間を投入して、システム内の他のユーザーが同じ仕事をする必要をなくす。VSが小さくて固定されている場合、時間経過に伴い敵対者が検証者の全員又は大多数を唆す可能性があるため、システムのセキュリティはあまり高くない。
上述の不測の事態を防ぐべく、各VSはS及び何らかの追加的な情報Pに基づいて無作為に又は疑似乱数的に選択される。例えば、ハッシュ関数又は別の適当な暗号関数H、例えばVS=H(S,P)を用いることができる。Pの可能な選択として、時間情報、Sが出現するかブロック又はブロック群に関する情報、これらのブロックに含まれるか又はこれらのブロックから、或いはより一般的には一切の情報を含まないブロックチェーン等から推論可能なデータが含まれていてよい。(Sが出現するブロック又はブロック群に基づいて選択されているため、VSがSに基づいて選択できる点に注意されたい。例えば、SがブロックB又はブロック番号nの全ての発動の集合である場合、VSはB又はnに基づいて選択されてよい。別の例として、Sが、何らかの所与のオーダーの、ブロック番号nの第2の発動の集合である場合、VSはペア(n,2)を含む情報に基づいて選択することができる。Sに基づいて選択されることは、S及び他の情報に基づく選択を含む。)
VSの上述の無作為選択により、敵対者がVSの検証者のうち何人かを唆すことが極めて難しくなる。実際、検証者の集合は毎回劇的に変化し得る。
理想的には、VSの検証者は秘密の抽選方法を介して選択される。そのような方法では、ユーザーvは自身がVSの検証者であるか否かを秘密裏に知るが、本当にそうであればこれを他人に対して証明することができる。例えば、vは自身の秘密鍵を用いて自身がVSに属するか否かを計算することができる。例えば、vはSIGv(S,P)を計算して、そのように計算されたデータストリングが所与の特性を満たすか否かを確認することができる。そのような特性の一つは、一切の限定を意図することなく、値SIGv(S,P)を有していてよく、又は自身のハッシュが所与の数tよりも小さくてもよい。実際、他の任意のデータストリングと同様にSIGv(S,P)は一意に数と解釈することができ、当該数は「目標」数tと容易に比較できる。例えば、t=0.001ならば、暗号関数Hがランダム関数として扱われる場合、H(SIGv(S,P))≦tである確率は1000分の1である。従って、本例では、可能なユーザーの1000人に1人はVSの検証者である。本例の検証者集合VSは確認可能である点に注意されたい。実際、vがVSに属する場合、vは自身の署名SIGv(S,P)を解除することにより、そうであることを証明することができる。実際、このデータストリングを与えられたならば、これがVSに属すると判定する所望の特性を有しているか否かを誰でも判断できる。しかし、vがSIGv(S,P)を開示するまでは、敵対者はvが誰であるかを知らないため、vを唆すことは極めて困難である。実際、vがVSに属するか否かを判定する秘密鍵(上例では秘密署名鍵)をvだけが知っているため、vは秘密裏に選択される。実際、秘密抽選を介したVSの選択は厳重にセキュリティ保証されている。
4.検証
スマート契約の集合Sがブロックチェーンに登録(出現)されたならば、VSの各検証者vはS内の各発動Iの意味論的な正しさを検証し、次いで自身の応答を認証して拡散する。
スマート契約の集合Sがブロックチェーンに登録(出現)されたならば、VSの各検証者vはS内の各発動Iの意味論的な正しさを検証し、次いで自身の応答を認証して拡散する。
集合VSが秘密抽選を介して選択されたならば、vはまた自身が本当にVSに属している証明を拡散する。
検証者vは、S内の各Iに関する自身の応答を、例えばSIGv(i,valid)を計算して拡散することにより別々に認証してよい。
検証者vはまた、自身の全ての応答を一緒に認証して、どの発動が有効でどれが無効であるかを示すことができる。例えば、S内の発動がI1,I2,I3,I4,...,であって、発動I1,I3,...が有効且つ発動I2,I4,...が無効ならば、vは次式を計算して拡散することができる。
SIGi((I1,valid),(I2,invalid),(I3,valid)(I4,invalid),...)
SIGi((I1,valid),(I2,invalid),(I3,valid)(I4,invalid),...)
より簡潔には、vは1で有効を示し、0で無効を示すことができる。従って、上述の例の場合、vはSIGi((I1,1)、(I2,0)(I3,1),(I4,0),...)を拡散することにより、自身の全ての応答を認証することができる。更により簡潔に、S内の発動I1,I2,I3,I4,...,が実際に何らかの所定且つ明確な仕方で順序付けられている場合、上述のケースでvはSIGv(1,0,1,0,...)を拡散することができる。すなわち、第1の位置にある最初の1は、第1の取引すなわちI1が有効であることを示し、位置2にある最初の0は、第2の取引すなわちI2が無効であることを示し、以下同様である。
検証者vはまた、自身の応答をまとめて、但しS内の個別発動に関して認証された応答を抽出できるように認証することができる。例えば、vは、各々の葉がS内の別個の発動に関するvの応答を保存するマークル木を構築し、次いでマークル木の根に保存された値を認証することができる。
VSの正直な検証者は、S内の各発動Iに関する正しい応答(従って単一の応答)を返すだけである。
VSの検証者が有効又は無効と考えるSの発動を認証するために如何なる方法を用いるにせよ、VSで少なくとも所与の数Xの検証者によりIが意味論的に有効と認証されたならばS内の発動Iは正しく、さもなければ誤っていると考えられる。代替的に、VSにおいて少なくとも所与の数Yの検証者によりIが意味論的に誤っていると認証されたならばIは誤っていると考えられる。有意味性を最大化すべく、VSの検証者の大多数が正直な場合、(a)意味論的に有効なSの各発動Iが正しいと考えられ、誤っているとは考えられないように、及び同様に(b)意味論的に無効なSの各発動Iが誤っていると考えられ、正しいとは考えられないように、充分に大きいX及びYを選択する。
議論及び追加的詳細事項:VSの検証者に、S内の発動の意味論的有効性に関する自身の認証された応答を拡散させるだけでは充分でない。例えば、最近システムに参加して、これまでブロックチェーン全体を学んだユーザーは、自身が参加する前に何が拡散されたかを全く知らないかもしれない。従って、発動Iがブロックチェーンに登録された状況を見たとしても、Iが正しいか否かは分からない。従ってブロックチェーン自体でのIに関する最終的な「評決」を登録することが重要である。
マークル木が文献でよく知られていることを想起されたい。マークル木により、木の根に保存された値rに関して木のノードに保存された多くの情報項目を認証することができる。木のノードに保存されたいかなる値vも認証するために、根から値vを保存しているノードまでの認証経路を提供しなければならない。そのような経路は、木の範囲内で認証される一連の値よりもはるかに短い(例えば、対数的に短い)場合がある。値rが未知の場合、木のノードに保存された値vを認証するために、(例えばデジタル署名を介して)rを別々に認証し、次いでrに相対的なvの認証経路を提供することができる。
5.評決
新規ブロックを構築しているユーザーuはこのようなブロックに、未だブロックチェーンに出現していない有効な通常の取引(例えば、有効な支払い)だけでなく、最終評決、すなわち以前チェーンに登録された発動の正誤いずれかに関する情報を含んでいてよい。好適には、そのような情報は、最終評決がチェーンに未だ出現していない取引に提供される。
新規ブロックを構築しているユーザーuはこのようなブロックに、未だブロックチェーンに出現していない有効な通常の取引(例えば、有効な支払い)だけでなく、最終評決、すなわち以前チェーンに登録された発動の正誤いずれかに関する情報を含んでいてよい。好適には、そのような情報は、最終評決がチェーンに未だ出現していない取引に提供される。
Sを以前ブロックチェーンに登録された発動の集合、uを新規ブロックBを構築しているユーザーとする。次いで、S内の各Iについて、Iが正しいか否かを知るためにVSで充分に多くの検証者の応答を受信した後で、uはS内の発動に関する最終評決(例えば、S内の全ての発動)をBに含めてよい。このような最終評決はまた、集合S自体を識別する情報を含んでいてよく、好適には認証されている。uがBを認証したならば、そのような評決はuにより自動的に認証される。代替的に、uはS内の発動に関する最終評決を別々に認証することができる。例えば、S内の発動に関する最終評決を指定すべく、uは、VSの検証者が用いた方法の一つを用いてS内の発動の意味論的有効性に関する自身の応答を伝達することができる。
代替的に、uは、VSの充分に多くの検証者の認証された応答をブロックに含めて、このように含まれた応答から、有効であるS内の発動及び有効ではないS内の発動を判定可能にすることができる。恐らく、uはまた、このような応答と共に、注目する検証者が実際にVSに属することを証明する1個以上のデータストリングを含んでいてよい。
代替的に、uは、SVの一部の検証者、好適にはブロックチェーンに未だ記録されていない応答を有する検証者のSに関する応答を自身のブロックに含めてよいが、S内の発動の正しさはこのように含まれた情報だけから推論することはできない。しかし、ユーザーは複数のブロックにまたがりSの発動の正しさを推論することができる。Sの発動Iに関する最終評決は実際、チェーンに記録された充分に多くの応答がIの正誤(ケースの如何に依らず)を証明した場合に到達され得る。
ユーザーuは、S内の全ての、又は1個以上の発動の正しさに関する情報をBに含めてよい。例えば、uは、S内の1個以上の発動Iに関するVSの検証者の1個以上の応答をBに含めてよい。或いは、uは、S内の少なくともいくつかの取引の正しさを推論できる情報を含んでいてよい。VSの検証者がS内の発動の有効性に関する自身の応答を、S内のいくつかの取引Iだけに関する認証された応答を抽出可能にするように認証したならば、uは、そのようにIに関して抽出された認証を含んでいてよい。例えば、VSの検証者vが、マークル木の根rを認証することにより、S内の発動に関する自身の応答を認証したならば、S内の発動Iに対するvの認証をBに含めるべく、uはrに対するvの認証と、rからIの有効性に関するiの応答を含む値までの認証経路を含んでいてよい。
議論及び追加的詳細事項:ブロックBは、自身の通常の取引が有効である場合だけでなく、以前に登録された発動に関する最終評決が有効である場合に有効であると考えられる。
新規ブロックの生成に際してプルーフオブワークに依存するブロックチェーンにおいて、正直な採掘者は無効なブロックに新規ブロックを紐付けることはしない。
Algorand等のブロックチェーンでは、新規ブロックBが提案され、次いで適切なユーザーの集合(例えば、検証者の適切な集合)によりチェーンへの追加が投票又は合意で決定されるが、無効なブロックは恐らく投票又は合意により追加されない。
プロトコルは、所与の契約の同時実行を許すか、又はCの複数の実行を特定の順序で実行させることができ、このような実行のうちいくつかを無視することも含まれる。例えば、所与の契約Cの発動Iがブロックチェーンに登録されていれば、プロトコルは、Iに関する最終評決がブロックチェーンに出現するまでCの別の発動をブロックチェーンに登録することを禁止できる。特に、新規ブロックBを構築しているユーザーuは、Cの2個以上の実行にBを含めることはできない。代替的に、Cの2個以上の発動が出現し得るが、これらのうち1個が最初に実行されるように(例えば所定の何らかの仕方で)選択される。他の発動は決して実行されないか、又は第1の発動に関する最終評決に到達した後でしか実行できない。更に代替的に、契約の種類及び契約に内容に応じて、最初に実行する1個を選択し、次いで二番目を選択し、以下同様に選択していく。
契約Cの発動Iはまた、Iに関する一切の最終評決がブロックrの後でブロックチェーンに入らないように、ブロック番号rを含んでいてよい。代替的に、このようなrは、Iが登録されたブロック及びI内で宣言されたステップ数に基づいて自動的に決定することができる。これにより、最終評決無しで本来の発動が残っていれば、Cの新規な発動が可能になる。このような場合、発動Iに関してIがブロックチェーンに登録された際に自身が支払った対価に対する責任を負うユーザーに自動的に弁済することが考えられる。
契約Cの発動Iの最終評決(の指標)がブロックチェーンに入った場合、当該評決は肯定的ならば、これを理解しているユーザーxがCの現在状態を適切に更新し、全ての関連する正味効果が発現したものと考える。(例えば、発動Iがあるユーザーから別のユーザーへの支払いを宣言したならば、そのようなユーザーが所有する資金は自動的に更新される。)最終評決が否定的な場合、Cの状態の更新は行われず、正味効果は一切発現しない。しかし、発動Iに責任を負うユーザーに対して追加的な対価が自動的に科され得る。
1 一般的解析
セキュリティ、効率、及びコスト:所与の集合Sの発動に関する単一の検証者vの応答は、vが正直であることが確実ならば充分であろう。しかし、無論、ブロックの契約者/提案者又は他の誰もが、どの検証者が正直であるかが分からない。しかし、大多数の検証者が正直であると確信することは容易である。従って、充分に多くの、好適には無作為に選択された検証者が他の全てのユーザーに、Sのどの発動が有効であり、どれが無効であるかを教えることで、ユーザーは自身でそれらの有効性を検証する必要無しにSの発動が正しいことが分かる。これが、本発明のスキームがセキュリティ保証され且つ同時に効率的である理由である。
セキュリティ、効率、及びコスト:所与の集合Sの発動に関する単一の検証者vの応答は、vが正直であることが確実ならば充分であろう。しかし、無論、ブロックの契約者/提案者又は他の誰もが、どの検証者が正直であるかが分からない。しかし、大多数の検証者が正直であると確信することは容易である。従って、充分に多くの、好適には無作為に選択された検証者が他の全てのユーザーに、Sのどの発動が有効であり、どれが無効であるかを教えることで、ユーザーは自身でそれらの有効性を検証する必要無しにSの発動が正しいことが分かる。これが、本発明のスキームがセキュリティ保証され且つ同時に効率的である理由である。
例えばユーザーの80%が正直である場合、S内のIの検証者数は約500人であり、300人の検証者の応答が実際に極めて高いセキュリティを確保することができる。同時に、Sが例えば100個の発動を含んでいる場合、平均5人のユーザーだけが各発動の有効性を検証するため、システムは、極めて高いセキュリティに加え、極めて効率的になる。
宣言された実行の有効性を比較的少人数(特に平均)の検証者が直接確認するため、所与の実行の登録に要する対価を極めて低く抑えることができる。実際、例えばシステムの全ユーザーではなく、平均して単に5人のユーザーの上例において、極めて少人数のユーザーの計算コストを弁済する必要がある。スマート契約の発動に要する対価は往々にして「ガス」と呼ばれる。従って、本発明のシステムでは、
ガスは極めて多くの望ましい種類の契約においてはるかに安価である。
ガスは極めて多くの望ましい種類の契約においてはるかに安価である。
高いセキュリティと、高い効率及び低コストが相まって、本発明のシステムは、大規模なクラスのスマート契約にとって極めて魅力的であり、実際、そのような契約を大規模に使用することが可能になる。
実際、本発明のシステムにより、スマート契約は他のシステムよりもはるかに長い時間にわたり実行可能であるため、全体的な計算量を大幅に抑えることができる。
資金の重み付け:本出願を通じて、所与の発動の集合Sの検証者VSの集合を、何らかの形式のプルーフオブステーク少なくとも部分的に基づくAlgorand又は他のブロックチェーンと同様に、所与の時点(例えば、Sがブロックチェーンに登録された時点)でシステム内に所有する資金量に基づいて選択することができる。実際、所与のユーザーは、1よりも大きい複数のVSを入れることができる。実際、SVは、各検証者が自身の所有する資金量に応じてより多くの投票権を有するような検証者の集合の投票数を含んでいてよい。すなわち、本発明のシステムはまた、資金の大部分が正直な人の手元にあると仮定される場合にも適用できる。
計算効率:システム内のユーザーの数nは莫大(例えば、n=100M)であり得るものの、C(input)の実行に要する検証者の数はT人(例えば、T=500)に過ぎないことに注意されたい。従って、本発明の技術によるCの実行の総計算コストは100Mの#stepsではなく500の#steps以下である。従って、Algorandにおけるスマート契約は他のシステムよりもはるかに長い時間にわたり実行可能であり、しかも完全な全体的な計算量を大幅に抑えることができる。換言すれば、新技術は、はるかに大きな柔軟性を発揮し、はるかに大規模なクラスのスマート契約の使用を可能にする。
コスト効率:新たなスマート契約技術の計算効率は自動的にコスト効率を示唆する。100M人のユーザーを有するシステムで1時間の計算を要するスマート契約Cの実行の発動を考える。このようなシステムでは、本質的に100M時間の計算の総コストをカバーする必要があるため、必然的にCの従来の発動の対価を極めて高くせざるを得ない。対照的に、新た技術では、Cの同じ発動に対応する対価は、500時間の計算だけをカバーするだけでよい。実際、後者のコストは適度であるだけでなく、システム内のユーザーの総数がたとえ1B以上であっても同じままである。換言すれば、本発明の新たなシステムでは、
「ガス」は極めて多くの望ましい種類の契約に対してはるかに安価である。
「ガス」は極めて多くの望ましい種類の契約に対してはるかに安価である。
スループット効率:本発明の技術により、ブロックBに登録された契約Cの発動Iは、「チェーン外」の適切な検証者の集合によるCの実行を起動する。従って、このような実行に長い時間かかるとしても、ブロックBの有効性の確認には長い時間を要しない。従って次のブロックの生成を直ちに始めることができる。換言すれば、本発明のシステムのスループットは極めて高い。Iの適切な検証者が実行を完了したならば、そのような実行に長い時間を要したとしても、全くチェーンを減速することなくIに関する最終評決がブロックチェーンに入る。対照的に、従来の方法では、IがブロックBに記録される場合、次のブロックを生成する前にeの発動を終了しなければならない。従って、新たな技術では、個別又は全体の実行に1時間の計算を要するスマート契約をブロックが含んでいたとしても、新規ブロックを数秒で生成できる。
2 変型例及び追加
好適な実施形態を上に示した。当業者には他のいくつかの変型例及び代替策が可能であし、その全てが本発明の範囲に含まれることが理解されよう。以下ではそのいくつかだけを考える。
好適な実施形態を上に示した。当業者には他のいくつかの変型例及び代替策が可能であし、その全てが本発明の範囲に含まれることが理解されよう。以下ではそのいくつかだけを考える。
発動登録無しの最終評決:好適な実施形態において、発動Iは「システム実行」を起動するためにブロックチェーンに登録されなければならない。しかし、代替的には、Iはブロックチェーンに入らず、その最終評決(の指標)が入る場合がある。例えば、Iは単に、充分に多くの検証者に注目されて処理されるまで拡散され、検証者はIに関する自身の個々の応答を拡散し、新規ブロックBの構築者は、充分に多くのコヒーレントな応答を見た場合のみ、Iの最終評決に関する情報をBに含める。(例えば、Iの少数の又は充分に多くの検証者の署名された個々の応答。)
追加的尺度及び結果:スマート契約の発動において、実行されたステップ数は発動の複雑さの重要な尺度であり、最終的な支払い/効果はその重要な結果の一部である。しかし、追加的な尺度及び結果があり、その全てを本発明の範囲内で扱うことができる。以下で数例について詳述する。
スマート契約は任意のプログラムであってよく、契約Cの実行はC自体、又は他のスマート契約の他の実行を自動的に起動することができる。(実際、スマート契約はチューリング完全言語で書かれている場合が多い。)この事実は利点であるが短所でもあり得るため、契約Cの発動Iが行い得る呼び出しの数を含めることが望まれる場合がある。
例えば、呼び出しの数#callsをinvokei内に(別々の要素として、及び/又は他の要素の一部として)指定することができ、Iの対価feeを#callsに依存するように調整することができる。このような依存性は#callsに単に比例していても、又は劇的に増加する場合もある。Iの検証者は従って、#callを含む全ての複雑さの尺度に関して#callsが正しいこと、及びfeeも正しいことを検証するよう求められる場合がある
代替的に、又は追加的に、呼び出しの数を制限する場合がある。例えば、宣言された#callsが所与の限界よりも大きい、又はCが実際に行う呼び出しの数が#callsより大きい場合、#steps及びfeeの値に依らず、発動は無効であると考えられる。個別且つ最終的な評決に関して上で述べた全ての機構は、複雑さのこの新たな尺度に直接適用できる。
また、通常の呼び出しと「入れ子呼び出し」を区別することができる。例えば、Cの実行eが契約Cの実行e’を生起させ、次いで後者が契約C”の実行e”を生起させたならば、e”は「レベル」2の入れ子呼び出しであると考えられる。同様に、レベル3、4等の入れ子呼び出しもあり得る。入れ子呼び出し及び/又はそれらのレベルもまた発動I内で宣言することができ、Iの対価、有効性、及び取扱いは、当該追加的に宣言された情報を含むように直接延長することができる。
発動Iの直接的な正味効果に加え、その呼び出しの効果も考えることができる。例えば、Iが直接又は自身の呼び出しを介して送金させる総資金量をI内で明示的に示すことができる。再び、所与のレベルの呼び出しを禁止するか、又は通常の呼び出しよりも高価にすることができる。
インセンティブ:1個の発動又は発動の集合の検証者には適切な報酬を介してインセンティブが与えられてよい。特に、発動Iの検証者は、Iに関する自身の応答がIに関する最終評決と一致するならば、報酬を得る資格を有していてよい。
そのような検証者の全員又は何人か(例えばサンプル)が報酬を得られる。報酬を得られる検証者は暗号により(例えば、暗号抽選により、及び/又はランダムビーコンの支援を介して)選択されてよい。(脚注4:そのようなサンプルは、自身が極めて頻繁に選択しなおされる専門的な関係者により選択することができる。特に、そのような関係者は、自身が暗号抽選により選択されていてよく、1個以上の検証者にデジタル署名して報酬を受けることができ、自身の署名がブロックに出現し得る。)代替的に、そのような検証者はブロック構築者により選択されてよい。発動I(又は発動の集合S)の報酬を得た検証者及びIの(又はSの)最終評決は同一ブロックに示すことができる。
例えば、ブロック構築者uは、I(又はS)の最終評決V、並びに報酬を得るべき1人以上の検証者vを識別する情報を自身のブロックに挿入することができる。(代替的に、報酬を得た検証者を識別する情報を後続ブロックに挿入して、恐らくは別のブロック構築者/提案者により選択することができる。)例えば、uはまた、最終評決Vに加え、vの応答がVに一致するか否かを確認可能にすべく、検証者vが本当にI(又はS)を検証すべく割り当てられたことの証明をブロックチェーンに含めてよい。代替的に、構築者はVを自身のブロックに含めないようにしてもよい。例えば、Iの単一の検証者v、又は応答がコヒーレントである複数のそのような検証者に対して、v及びvのデジタル署名された個々の評決だけを含めれば充分である。実際、そのような個々の応答から、最終評決Vが何を意味しているかを推論することができる。例えば、ブロックが、Iに関する単一の検証者vの個々の応答だけを含んでいる場合、この情報を用いて、Iに関する最終評決がIの個々の評決に対応する(及び、恐らくは報酬のためにvが目標とされたことを示す)ことを示すことができる。ブロック内で識別されたならば、報酬を得た検証者全員に自動的に支払うことができる。
正直なブロック構築者は、報酬を与えるIの検証者を無作為又は他の何らかの仕方で選択してよい。たとえ悪意のある構築者が異なる仕方(例えば悪意のある検証者を優先することにより)で検証者に選択したにせよ、Iの検証者は依然として自身の真の応答を報告するインセンティブを有している。実際、大多数の検証者は正直であると期待されていて、ブロック構築者も同様に期待されている。
更に、1個以上の発動Iの検証者に報酬を与えるべく、又は検証者の個々の評決を考慮に入れるべく、当該検証者が本当にCを正しく実行した証拠が必要になる場合がある。そのような証拠は何らかの種類のCSプルーフ、スナーク、又はスタークを含んでいてよい。そのような検証者が提供した証拠はまた、ブロック内で使用されてIに関する最終評決の一部(又は証拠全体)として記録することができる。
肯定的報酬に加え、ブロックチェーンはペナルティを科してもよい。例えば、自身の正しさに関する最終評決とは異なる発動(又は発動の集合)に関する応答を報告している検証者vには過料を科すことができる。そのような過料はvが所有する資金から自動的に差し引くことができる。
ブロックチェーンはまた、意味論的に無効な少なくとも1個の発動Iをブロックチェーンに意図的に登録することに想到し得る。これは意味論的に有効なIを検証すべく割り当てられていて、Iが意味論的に有効であると悪意をもって(直接に、又はIを含む発動の集合の有効性に関して報告する際に)報告する検証者を特定する(及び恐らくはペナルティを科す)のに役立ち得る。
例えば、意図的に意味論的に無効とされた発動を登録するユーザーは悪意があってそうするのではなく、悪意のある検証者の特定を助けるために選択されているからである。従って好適には、これらの助力ユーザーの選択は秘密(意図的に意味論的に無効とされた発動の検証者には、当該発動がそのような目的で無効にされていることが分からないように)且つ無作為(少なくとも何人かの正直な助力ユーザーが確実に選択されているように)である。例えば、このような助力ユーザーの選択に用いる処理は、発動I又は発動の集合Sの検証者vを選択する処理と同様であってよく、助力ユーザーは、他のデータ(例えば、ストリング「HELPING USER」)と共にブロックチェーンから推論可能な所与の量Qにデジタル署名し、当該署名をハッシングして所与の目標数値よりも小さいか否かを確認することにより選択されてよい。当該処理は、uが当人の選択の証拠(上例ではデジタル署名)を開示するまで、所与のユーザーuが助力ユーザーとして選択されていることを他のユーザーに気付かれないことを保証する。この証拠は、uが登録した意図的に意味論的に無効とされた発動Iに関する最終評決がブロックチェーンに入れられた後で開示されてよい。このような証拠は有効な取引として極めて頻繁にブロックチェーンに挿入されてよい。このように、uがブロックチェーンでスマート契約が正直に機能するためのセキュリティを確保すべくプロトコルに従い行動したことを誰もが認識しているため、uに科された対価又は過料があれば自動的に(恐らく報酬に加えて)uに弁済することができる。
3 確約された宣言的スマート契約
ここで特別な種類の宣言的スマート契約、すなわち確約された宣言的スマート契約(略してCDSC)について述べる。このような契約の発動は一時的に、対応する実行の正味効果の少なくとも一部を隠蔽する。これらの発動は上述のように登録することができる。それらの構文的有効性も上述のように確認することができる。そのような発動の集合に上述のように検証者を割り当てることができる。次いで最終評決を上述のようにブロックチェーンに記録することができる。
ここで特別な種類の宣言的スマート契約、すなわち確約された宣言的スマート契約(略してCDSC)について述べる。このような契約の発動は一時的に、対応する実行の正味効果の少なくとも一部を隠蔽する。これらの発動は上述のように登録することができる。それらの構文的有効性も上述のように確認することができる。そのような発動の集合に上述のように検証者を割り当てることができる。次いで最終評決を上述のようにブロックチェーンに記録することができる。
しかし、これらの新規な発動の検証者は上述のようにはそれらの意味論的有効性を確認しない。その理由は、これらの新規発動が一時的に、当該発動が指定する実行の正味効果の少なくとも一部を隠蔽するからである。これらの発動は実際、このような正味効果の確約を含んでいる。(このような確約はそのような正味効果を隠蔽するが、後のある時点で、本来確約された正味効果が何であったかを証拠をもって開示する扉は開いたままにしておく。)
従って、そのような1個の発動Iを検証すべく割り当てられた検証者は、Iが指定した実行eの全ての正味効果が何であるか学びながらeを再現することができるが、Iで確約された正味効果が検証者自身で計算したものであるか否かを判定することはできない。従って、このような検証者は自身の応答の中で、自身で計算してIで確約されたeの正味効果への自身の個人化された確約を、それらの値が一致するか否かを知らずに報告する。このように個人化された確約は、単にIの対応する確約を複製するだけでは得られず、且つ後者の確約又は他の任意の個人化された確約から都合よく計算することもできない。実際、CDSCの考えは、Iに隠蔽された正味効果が何であるかをIの検証者に学ばせ、次いで、そのような効果に対する自身の確約を計算させて自身の応答に含めさせるものである。従って、ある意味で、Iの各検証者は独立に行動してIに呼び出された実行eを実際に実行しなければならない。
後の時点でのみ、本発明のシステムは、Iで確約された正味効果が、Iの充分に多くの検証者の応答で(個人化されて)確約された正味効果と一致するか否かを確認可能にすることにより、Iの正しさを検証可能にする情報を開示する。従って、CDSCの個々の発動又は発動の集合に関する最終評決をブロックチェーンに記録することができ、上述と同様に、及び新たな方式でユーザーにインセンティブ及び/又はペナルティを科すことができる。
一切の限定を意図することなく、以下にCDSCの追加的な詳細事項を説明する。
1.確約された発動
スマート契約Cの確約された宣言的発動Iは、宣言的発動と極めてよく似ている(所与の入力/入力及び初期状態に対する)Cの実行e及び他の関連データを指定するが、代わりにsに対する確約を含めることによりeの正味効果の集合sを隠蔽する。
スマート契約Cの確約された宣言的発動Iは、宣言的発動と極めてよく似ている(所与の入力/入力及び初期状態に対する)Cの実行e及び他の関連データを指定するが、代わりにsに対する確約を含めることによりeの正味効果の集合sを隠蔽する。
所与の値xの確約により所与の時点で秘密裏にxを固定することができるが、固定された値xが何であったかが証明されるのは後の時点である。例えば、正味効果の集合sを確約すべく、Iは所与の(衝突耐性のある)ハッシュ関数Hに対してh=H(s)を含めることができる。実際、sを知らなければhからsを計算するのは難しい。同時に、最終的にsを開示することで、開示されたsが真に本来の確約された値であることを、hを知る誰もが納得する。その理由は、H(z)=H(s)であるいかなる値z≠sも計算するのは難しいからである。代替的に、これらの効果の各々のハッシュを別々に含めることにより、Iは正味効果の集合を確約することができる。例えば、sがe、γ’により生成されたCの新たな状態及びe,a1,a2,...により生成されたプレーヤー金額調整を含んでいれば、IはΗ(γ’),H(a1),H(a2),...を含めることによりsを確約することができる。更に代替的に、Iは、ノードが注目する正味効果を保存しているマークル木の根値を含むことにより、正味効果の集合sを確約することができる。より一般的には、本発明のシステムは他の確約方法を用いてIの正味効果の一部を一時的に隠蔽することができる。
スマート契約の(少なくとも部分的に)確約された宣言的発動の関連データは通常の宣言的発動と同様であってよい。
簡潔のため、文脈が充分に明らかな場合、確約された宣言的発動Iをより簡素に宣言的発動、更に簡素に発動と呼ぶ場合がある。スマート契約の発動が確約された宣言的発動でないと強調したい場合、通常発動という用語を用いる場合がある。
議論及び追加的詳細事項:確約された宣言的発動に適用可能な通常発動に関する議論及び追加的詳細が後続の発動に自動的に拡張される。
適切な発動ユーザーによりデジタル署名された、確約された発動がCの関連する実行の全ての正味効果を認証し続けるが、それらの集合sが間接的に、すなわちsの確約を認証することにより認証される点に注意されたい。
以下で分かるように、本発明のシステムにより、Iが指定する実行eを計算する負担を全てのユーザー又はあまりに多くのユーザーにかけることなく、ブロックチェーンを観察している全てのユーザーが契約Cの確約された発動Iが正しいか否かを判定することができる。
そのような確約された発動Iがどのように登録されるかを以下に述べる。
2.確約された発動の登録
確約された発動Iは、通常の発動と極めて同様な仕方でブロックチェーンに入ることができる。例えば、Iがブロックチェーンに入る条件としてIの構文的有効性が充分であろう。
確約された発動Iは、通常の発動と極めて同様な仕方でブロックチェーンに入ることができる。例えば、Iがブロックチェーンに入る条件としてIの構文的有効性が充分であろう。
このような構文的有効性の確認は、Iの対価がIで宣言されたステップ数が指定された実行を行うのに充分であるか否かの確認を含んでいてよい。実際、対価及び宣言されたステップ数は、Iにより指定されてブロックチェーン内で生じる実行eの正味効果とは考えられない。従って、対価及び宣言されたステップ数は公然とIに出現することができる。
再び、構文的に無効な確約された発動を含むブロックは無効であると考えられ、Iが拡散する間に他のユーザーにIを転送するために確約された発動の構文的有効性が必要とされる。
確約された発動Iがブロックチェーンに登録されたならば、システムはその正しさを確認する処理を開始する。以下、当該処理の説明に移る。
3.確約された発動の割り当て
1個以上のブロックに登録された、1個以上の確約されたスマート契約発動の集合Sが、通常の発動の割り当てについて記述された任意の方法に従い、検証者の集合Vsに割り当てられる。
1個以上のブロックに登録された、1個以上の確約されたスマート契約発動の集合Sが、通常の発動の割り当てについて記述された任意の方法に従い、検証者の集合Vsに割り当てられる。
4.確約された発動の検証
確約された発動の集合Sがブロックチェーンに登録されたならば、VSの各検証者vは、適切な入力及び状態に対してS内の各発動Iの契約Cを実行し、次いで自身の応答を認証して拡散する。既に上で述べたように、このような応答は、Iで指定された実行eのいくつかの正味効果の個人化された確約だけを含んでいてよい。以下にそのような応答のいくつかの可能な例を挙げる。
確約された発動の集合Sがブロックチェーンに登録されたならば、VSの各検証者vは、適切な入力及び状態に対してS内の各発動Iの契約Cを実行し、次いで自身の応答を認証して拡散する。既に上で述べたように、このような応答は、Iで指定された実行eのいくつかの正味効果の個人化された確約だけを含んでいてよい。以下にそのような応答のいくつかの可能な例を挙げる。
Iが露わに無効である(例えば、その発動eのステップ数がIで宣言されたステップ数を上回る)場合、vは、例えば自身の応答にペア(I、無効)を含めることにより、これがSに関する自身の応答であることを示す。
第2の例において、eをIに呼び出された(指定された)実行とし、Iにeの正しいステップ数を宣言させ、neが所定の順序及び仕方で示すeの全ての正味効果を含むようにし、確約H(ne)を含むことによりIにneを隠蔽させる。次いで、e(従ってne)を再構築した後で、vはIを識別する情報と、好適に個人化されたneの確約とを認証することができる。neに対するvの個人化された確約とは、(a)たとえvがIに含まれる確約H(ne)を知っていて、且つneの他の確約も知っていたとしても、vがneを知らずにhvを計算するのは困難であり、(b)neとvを知っていればneに対するvの個人化された確約を誰でも簡単に計算できるようなneに対する確約hvを意味する。
例えば、neに対するvの個人化された確約はHv(ne)を含んでいてよく、ここにHvはHv(x)=H(v,x)で定義されるハッシュ関数である。従って、h=Hv(ne)=H(v,ne)は実際にneに対するvの確約である。実際、H(v,ne’)=hとなる別の値ne’を誰も見つけることができず、値neが開示されたならば、誰でも実際にh=H(v,ne)であることを検証できる。更に、vは当該確約を、Iで与えられる確約H(ne)から、且つz≠vならばH(z,ne)からも容易に計算できないため、vの当該確約は個人化されている。
vをneと共にハッシングするのはneに対するvの個人化された確約の一例に過ぎず、一切の限定を意図していない点に注意されたい。例えば、H(v,ne)のvを好適にはvに一意に依存する任意のデータで代替しても同様にうまくいく。neへの個人化された任意の形式の確約も本発明の範囲に含まれる。
(通常の発動に関して、集合VSが秘密抽選を介して選択されたならば、vは、自身の応答に加え、自身が本当にVSに属している証拠も拡散する。再び、vは、S内の各々の確約された発動Iに関する自身の応答を通常の発動の場合とほぼ同様に別々又は一緒に、認証することができる)(脚注5:例えば、S内の発動がI1,I2,I3,I4であり、発動I1,I3,...が有効(且つ各々正味効果ne1,ne3,...を有している)、発動I2,I4,...露わに無効であれば、vはSIGv((I1,Hv(ne1)),(I2,無効),(I3,Hv(ne3)),(I4,無効),...)を計算して拡散することができる。再び、より簡潔に,I1,I2,I3,I4、...が所与の順序でのSの発動である場合、vは、シーケンス(Hv(ne1)),0,Hv(ne3),0,...)を認証して拡散することができ、ここに0は対応する発動が露わに無効であることを示す。検証者vはまた自身の応答を一緒に認証することができるが、S内の個々の発動に関するvの認証された応答を抽出できるようにする。例えば、vは、各々の葉がS内の別々の発動に関するvの応答を保存するマークル木を構築し、次いで当該マークル木の根に保存された値を認証することができる。)
確約された発動の実行eの正味効果neに対して個人化された確約を用いることで、VSの検証者vには、例えばIに呼び出された実行eを実際に実行することによりneの値を知ることなしには、たとえ発動Iが適切に用意されたことをvが確信していても、Iが有効であると認証することが困難になる。同時に、neを知ったならば、確約がIに含まれている値neと、vにより個人化された確約がIに関するvの応答に含まれている値が同一であるか否かを誰でも検証することができる。
確約された発動の正しさ:VSの正直な検証者は、S内の各々確約された発動Iに関する正しい応答だけ、従って単一の応答を提供する。そのような発動Iが正しいと考えられる(証明される)のは、Iで確約された隠蔽された正味効果が、VSの検証者の少なくとも所与の数Xの応答で確約された正味効果と同一の場合である。VSの検証者のうち少なくともY人の応答が、Iが無効であることを示す場合、発動Iは正しくないと考えてよい。代替的に、ブロックチェーンの所与の位置で未だ正しいことが証明されていない場合、Iは正しくないと考えてよい。
しかし、neを知らなければ、H(ne)=Hv(ne)であるか否かを判定するのは困難である点に注意されたい。従って、システムは確約された発動のいずれが正しいかを判定する何らかの方法を必要とする。そのような複数の方法について以下に述べる。
4.5 隠蔽された正味効果の開示
Iを発動した適切な関係者をiとし、Iにより指定され、且つ確約がIに出現する実行eの正味効果をneとする。一般性を失うことを意図することなく、I内でneを確約する方法がneのハッシュを含んでいるものとする。iが正直であると仮定すれば、恐らくiは(1)値neを知っていて、(2)確約H(ne)を適切に計算してIに含めており、(3)正味効果neが実際にブロックチェーン内で発現することを望んでいる。
Iを発動した適切な関係者をiとし、Iにより指定され、且つ確約がIに出現する実行eの正味効果をneとする。一般性を失うことを意図することなく、I内でneを確約する方法がneのハッシュを含んでいるものとする。iが正直であると仮定すれば、恐らくiは(1)値neを知っていて、(2)確約H(ne)を適切に計算してIに含めており、(3)正味効果neが実際にブロックチェーン内で発現することを望んでいる。
従って、VSでX人よりも多い検証者vがneに対する個人化された確約、例えばHv(ne)を自身の応答に含んでいることをiが知ったならば、iは、好適には認証された仕方で、発動Iを識別する情報と共にneを拡散する。
neが開示されたならば、ブロックチェーンメッセージを観察している誰もが、値neが、I内で確約された値、及び検証者VSのうち少なくともX人の応答の個人化された確約における値と同じ値であることが分かる。換言すれば、観察者全員が、確約された発動Iが正しいことを知る。
neを開示するのが発動者iである必要はない点に注意されたい。例えば、eを実行し,neを計算し、neがIで確約された値、及びVSの検証者のうち少なくともX人の応答の個人化された確約における値と本当に同じであることを理解した任意の主体(例えば、Iが属する確約された発動の集合Sに割り当てられた特別の検証者)であってよい。
ここでブロックチェーン内での上の理解を公式なものとする。
5.確約された発動に関する評決
Iを、ブロックチェーンに既に登録されているが、最終評決を有していない確約された発動とする。次いで、Iが正しいと理解している新規ブロックBの構築者uは、Iが正しいことを示す情報をBに含めることにより、Iに関する最終評決を提供する。
Iを、ブロックチェーンに既に登録されているが、最終評決を有していない確約された発動とする。次いで、Iが正しいと理解している新規ブロックBの構築者uは、Iが正しいことを示す情報をBに含めることにより、Iに関する最終評決を提供する。
本システムはまた、最終評決が未だ存在しないブロックチェーンに既に登録された確約された発動の集合Sに関する全ての確約された発動の最終評決を同時に提供することができる。
例えば、Sのどの発動が正しいかを知っていて、新規ブロックBを構築しているユーザーuは、Sのそのような発動に関する最終評決をBに含めてよい。このような最終評決はまた、集合S自体を識別する、好適には認証された情報も含んでいてよい。uがBを認証する場合、そのような評決はuにより自動的に認証される。代替的に、uはSの発動に関する最終評決を別々に認証することができる。
代替的に、uは、VSの充分に多くの検証者の認証された応答をブロックに含めてよく、そのように含まれた応答から、S内の有効な発動及びSの有効でない発動を判定可能にする。その際、通常の発動のケースで述べた方法のいずれかを用いてよい。
議論及び追加的詳細事項:ブロックBが有効であると考えられるのは、通常の取引が有効である場合だけでなく、以前に登録された発動(通常又は確約された)に関する最終評決がこのような発動の正しさを適切に反映する場合もそうである。
通常の発動について述べた他の議論及び追加的詳細事項も同様に確約された発動にあてはまる。通常の発動について提示された各種の変型例及び追加事項でも同じである。
特に、一切の限定を意図することなく、資金運用技術用の重み付けも、確約された発動の検証者にあてはまる。従って、一人の検証者を、重みnを付けてn人の別々の検証者として扱うことができる。
確約された発動Iに関する応答が、Iの確立した正しさ及び/又はIで確約された正味効果の確立した開示値と一致する検証者は、例えば、通常の発動又は新規の発動の検証者に関して既に記述したインセンティブ方法のいずれかにより報酬が与えられてよい。
同様に、確約された発動Iに関する応答がIの確立した正しさ及び/又はIで確約された正味効果の確立した開示値と一致しない検証者は、例えば、通常の検証者に関して既に記述したインセンティブ方法のいずれかにより過料又はペナルティが科される場合がある。特に、他の少なくともいくつかの発動の検証への割り当てに不適格とされてよい。
正しくない確約された発動Iの発動者もまた、特別な過料を科されるか又は何らかの方法でペナルティを科される場合がある。
4 変型例及び追加事項
sをスマート契約Cの確約された発動Iにより指定された実行eの正味効果の集合とし、h=H(s)をIに含まれるsに対する確約とする。ある関係者、例えばIを含む発動の集合に割り当てられた検証者等、Iに割り当てられた検証者は、s自体が充分に予測不可能ならば、H(s)からsを計算するのに苦労するであろう。しかし、sが例えば数ビットしか含んでいない場合、ある関係者が、ハッシュ値がhとなるまでsの全ての可能性を試すことは可能であろう。この可能性を阻止すべく、関係者が全部の正味効果を全体的に把握するのが困難になるように例えばeの全ての正味効果を含むように極めて大きいsを選択することができる。しかしこれでも充分でない場合がある。
sをスマート契約Cの確約された発動Iにより指定された実行eの正味効果の集合とし、h=H(s)をIに含まれるsに対する確約とする。ある関係者、例えばIを含む発動の集合に割り当てられた検証者等、Iに割り当てられた検証者は、s自体が充分に予測不可能ならば、H(s)からsを計算するのに苦労するであろう。しかし、sが例えば数ビットしか含んでいない場合、ある関係者が、ハッシュ値がhとなるまでsの全ての可能性を試すことは可能であろう。この可能性を阻止すべく、関係者が全部の正味効果を全体的に把握するのが困難になるように例えばeの全ての正味効果を含むように極めて大きいsを選択することができる。しかしこれでも充分でない場合がある。
eの確約された正味効果を正しく推測するのが難しいことを保証すべく、予測が困難な特別に選択された量をこれらの正味効果に人為的に含めることができる。例えば、注目するeの正味効果が新たな状態γ’及び少数のプレーヤー金額調整a1,...,akであるが、Iの適切な発動者はこのような正味効果に、実行eの終了時点でCの特別な補助変数の内容xを人為的に追加して、s=(γ’,a1,...,ak,x)とすることができる。実際、eの正味効果が常に容易に予測できたとしても、eの計算は、その単純な効果を発現させるために全く予測不可能な可変内容を有していても、又は有するように設計されていてもよい。従って、xが予測困難である場合、たとえγ’,a1,...,akを予測するのが極めて容易としても、H(s)からs=(γ’,a1,...,ak,x)を予測するのは困難であろう。(当然、xは純粋に補助的な役割を有し、発動Iが正しければブロックチェーンで発現する正味効果とみなすべきではない。)
代替的に、値xは、e及び恐らくは全く別々に指定されたプログラムPの実行、Iに含まれるか又はIから推論可能な全く別々の指定された入力yに依存し得る。そのようなプログラムP及び入力yは、P及びyからxを予測することが困難になるように選択されていてよい。例えば、Pの計算は、時に応じて実行eから得られた量を含んでいてよい。代替的に、P(y)の計算はeとは全く無関係であってよい。
再び、Iはxに対する確約を含んでいてよく、Iの実行eを検証すべく(直接又は間接的に)割り当てられた検証者vもまた、xを計算して、xに対する個人化された確約を自身の応答に含めるよう求められる場合がある。Iが正しいと考えてよいのは、Iに割り当てられた充分に多くの検証者のこれらの個人化された確約の基礎となる値が互いに一致し、且つ基礎となる値xがIで確約されている場合だけである。従って、Iに割り当てられた検証者は、Iに関する自身の応答を適切に考慮して欲しい場合にxを適切に計算するよう奨励される。
当業者が用いることができる上述の、及び他の可能な変型例のいずれにおいても、Iで宣言されたステップの総数が、xを計算するのに必要なステップ数も含んでいなければならず、従ってIの支払うべき対価が増加し得る。しかしIの適切な発動者は、Iの検証者が適切にxを計算することをより確信できるよう、進んで高い対価を支払う場合がある。
また、そのような値xがどのように使用するかに依らず、Iが正しいことが公開されていれば、Iがeの真の正味効果、例えばブロックチェーン内で実際に発現すべきものを含めること、及びxに対する個人化された確約をIの唯一の確約とすることも可能であり得る。この場合、Iを含む集合Sに割り当てられた検証者vは、(1)eの公けに宣言された正味効果が正しいか否かを示していて、且つ(2)xに対する個人化された確約を含んでいる応答を生成するよう求められる。この場合、発動Iが正しいと考えられるのは、Iで確約されたxの値が、Sに割り当てられた充分に多くの検証者vの応答で確約された値と一致する場合であり、そのような応答は公けに宣言されたIの正味効果が正しいことを示している。
本明細書に記述する機構が、一般に検証可能な方法での検証等の特定の目的でユーザーの部分集合を無作為に選択することが望ましい他のブロックチェーンシステムに適用できる点に注意されたい。従って、本明細書に記述するシステムは、イーサリアム又はライトコイン等の他のブロックチェーンスキーム、又は直接通貨に関係しないブロックチェーンスキームにも適合させることができる。
本明細書に記述するシステムは、以下の米国及びPCT特許出願のいくつか又は全てに開示された機構に適用及び組み合わせるべく適合することができる。すなわち2015年2月17日出願の第62/117,138号明細書、2015年2月26日出願の第62/120,916号明細書、2015年4月2日出願の第62/142,318号明細書、2015年9月15日出願の第62/218,817号明細書、2016年3月29日出願の第62/314,601号明細書、2016年2月17日出願のPCT/US2016/018300号明細書、2016年4月25日出願の第62/326,865号明細書、2016年5月4日出願の第62/331,654号明細書、2016年5月9日出願の第62/333,340号明細書、2016年5月31日出願の第62/343,369号明細書、2016年6月2日出願の第62/344,667号明細書、2016年6月7日出願の第62/346,775号明細書、2016年6月16日出願の第62/351,011号明細書、2016年6月22日出願の第62/353,482号明細書、2016年6月24日出願の第62/354,195号明細書、2016年7月19日出願の第62/363,970号明細書、2016年8月1日出願の第62/369,447号明細書、2016年8月24日出願の第62/378,753号明細書、2016年9月2日出願の第62/383,299号明細書、2016年9月13日出願の第62/394,091号明細書、2016年9月27日出願の第62/400,361号明細書、2016年10月3日出願の第62/403,403号明細書、2016年10月20日出願の第62/410,721号明細書、2016年11月3日出願の第62/416,959号明細書、2016年11月16日出願の第62/422,883号明細書、2017年2月6日出願の第62/455,444号明細書、2017年2月14日出願の第62/458,746号明細書、2017年2月16日出願の第62/459,652号明細書、2017年3月15日出願の第62/471,562号明細書、2017年5月16日出願の第62/507,074号明細書、2017年5月25日出願の第62/510,905号明細書、2017年6月21日出願の第62/522,927号明細書、2017年7月24日出願の第62/536,061号明細書、2017年8月4日出願の第62/541,568号明細書、2017年8月21日出願の第62/548,201号明細書、2017年5月4日出願のPCT/US2017/031037号明細書、2017年8月17日出願の第15/551,678号明細書、2017年9月28日出願の第62/564,670号明細書、2017年10月4日出願の第62/567,864号明細書、2017年10月10日出願の第62/570,256号明細書、2017年11月2日出願の第62/580,757号明細書、2017年12月19日出願の第62/607,558号明細書、2018年2月20日出願の第62/632,944号明細書及び2018年3月15日出願の第62/643,331号明細書であり、これら全てを本明細書において引用している。
本明細書に記述するシステムのソフトウェア実装は、計算機可読媒体に保存されていて、1個以上のプロセッサにより実行される実行可能コードを含んでいてよい。計算機可読媒体は非一時的でよく、コンピュータハードドライブ、ROM、RAM、フラッシュメモリ、CD-ROM、DVD-ROM、フラッシュドライブ、SDカード等の可搬コンピュータ記憶媒体、及び/又は例えばユニバーサルシリアルバス(USB)インターフェースを備えた他のドライブ、及び/又は実行可能コードを保存してプロセッサにより実行させることが可能な他の有形又は非一時的計算機可読媒体又はコンピュータメモリを含んでいてよい。本明細書に記述するシステムは任意の適切なオペレーティングシステムと組み合わせて用いることができる。
本発明の他の実施形態は、本明細書に開示する本発明の仕様又実施を考慮することにより当業者には明らかになろう。仕様及び実施例が例示目的に過ぎず、本発明の真の範囲及び趣旨は以下の請求項により示される。
Claims (30)
- 複数の取引が複数のブロックに編成された取引システムにおいて、一連の以前のブロックB0,B1,...,Br-1に対して新規ブロックBr及びBr+1を提供する方法であって、
前記ブロックBrが前記ブロックBr-1における取引の状態と整合する取引の初期状態を示すことを確認した後で前記ブロックBrを構築するステップと、
前記ブロックBr+1が前記ブロックBrにおける取引の状態と整合する取引の初期状態を示すことを確認した後で前記ブロックBr+1を構築するステップと、
複数の主体に、前記ブロックBr+1が構築された後で前記ブロックBrの未検証の取引を検証させるステップとを含む方法。 - 前記複数の取引がスマート契約である、請求項1に記載の方法。
- ユーザーが、前記スマート契約のうち少なくとも1個に関する取引を前記ブロックBrに記録する前提で前記ブロックBrを構築する、請求項2に記載の方法。
- 前記ユーザーが、前記スマート契約に関する取引結果も前記ブロックBrに記録する、請求項3に記載の方法。
- 前記ユーザーが、前記スマート契約に関する前記スマート契約の結果を得るのに要するステップ数も前記ブロックBrに記録する、請求項4に記載の方法。
- 前記ユーザーが、前記複数の主体が前記ブロックBrの取引を検証することで受け取る対価も記録する、請求項5に記載の方法。
- 前記複数の主体が、前記ブロックBrの全てのユーザーの部分集合である、請求項1に記載の方法。
- 前記複数の主体が無作為に選択されている、請求項7に記載の方法。
- 前記複数の主体を無作為に選択するステップが、時間情報、1個以上のブロックに関する情報、前記1個以上のブロックに含まれるデータ、又は前記1個以上のブロックから推論されたデータのうち少なくとも1個を含むデータに暗号ハッシュ関数を適用するステップを含んでいる、請求項8に記載の方法。
- ブロックチェーン内のブロックBを前記ブロックチェーンに追加する方法であって、
主体に、一つ前のブロックに対応する情報を受信させるステップと、
前記主体に、所与の入力に対してスマート契約実行の宣言的発動を受信させ、前記宣言的発動が前記実行に関連する結果及び他の関連データを宣言するステップと、
前記主体に、前記発動の構文的有効性を検証させるステップと、
前記主体に、前記発動の前記構文的有効性を検証したことに応答して前記宣言的発動を前記ブロックBに組み込ませるステップとを含む方法。 - 前記関連結果が、前記スマート契約実行の正味効果、前記スマート契約実行後に生じた状態、及び実行ステップ数のうち少なくとも1個を指定し、前記他の関連データが、前記宣言的発動の呼出者、時間情報、ブロック情報、及び支払うべき対価のうち少なくとも1個を指定する、請求項10に記載の方法。
- 前記宣言的発動が構文的に有効であるのは、前記対価が前記実行ステップ数に相応であり、且つ前記対価の支払者が前記対価を支払うのに充分な資産を有している場合であり、前記宣言的発動が前記ブロックチェーンに出現したならば前記対価が支払われる、請求項11に記載の方法。
- ブロックチェーン内の検証者の集合を、所与の入力に対してスマート契約実行の1個以上の宣言的発動の集合Sを検証すべく割り当て、前記宣言的発動が前記スマート契約実行の関連結果を宣言する方法であって、
前記検証者が前記集合Sを受信するステップと、
前記検証者がS内の前記宣言的発動のどれが意味論的に有効であるかを判定するステップと、
前記検証者が意味論的に有効な前記1個以上の宣言的発動の認証された応答を提供するステップとを含む方法。 - 前記検証者の集合がSに基づいて所与の暗号関数を介して疑似乱数的に選択される、請求項13に記載の方法。
- 少なくとも一人の検証者が、前記少なくとも一人の検証者の秘密鍵を用いる計算を介して前記少なくとも一人の検証者が選択されていると判定し、前記少なくとも一人の検証者が、前記少なくとも一人の検証者が選択されたということを他者に対して証明することができる、請求項14に記載の方法。
- S内の発動Iが正しいと考えられるのは、Iが意味論的に正しいことを、Sに割り当てられた少なくとも所与の人数の検証者の応答が示している場合である、請求項13に記載の方法。
- 宣言的スマート契約発動の集合Sが既に登録され、検証者の集合がSに割り当てられていて、前記Sの発動のどれが意味論的に有効であるかに関する認証された応答を前記検証者が提供しているブロックチェーンにおいて、前記Sの発動の評決を前記ブロックチェーンに組み込む方法であって、
主体に、前記検証者の前記認証された応答を受信させるステップと、
前記主体に、前記Sの発動の正しさを推論させるステップと、
前記主体に、前記Sの発動の正しさに関する最終評決を前記ブロックチェーンに組み込ませるステップとを含む方法。 - S内の発動Iの最終評決が、Sに割り当てられた少なくとも所与の人数の前記検証者の前記応答が、Iが意味論的に有効であることを示している場合Iが正しいことを示している、請求項17に記載の方法。
- Sの発動Iの最終評決が、Iが正しいことを示している場合、他のユーザーに前記スマート契約の状態を更新させ、前記スマート契約の実行の宣言された正味効果が発現したと思わせる、請求項17に記載の方法。
- ブロックチェーン内のブロックBを前記ブロックチェーンに追加する方法であって、
主体に、一つ前のブロックに対応する情報を受信させるステップと、
所与の入力に対してスマート契約実行の確約された宣言的発動を受信させ、前記確約された宣言的発動が、前記実行の少なくともいくつかの関連結果、前記実行の他の関連結果の確約、及び他の関連データを宣言するステップと、
前記確約された宣言的発動の構文的有効性を確認させるステップと、
前記確約された宣言的発動の前記構文的有効性の検証に応答して前記確約された宣言的発動を前記ブロックBに組み込むステップとを含む方法。 - 前記関連結果が、実行の正味効果、前記契約の実行後に生じた状態、及びステップ数のうち少なくとも1個を指定し、前記他の関連データが、前記発動の呼出者、時間情報、ブロック情報、及び支払うべき対価のうち少なくとも1個を指定する、請求項20に記載の方法。
- 前記宣言的発動が構文的に有効なのは前記対価が前記ステップ数に相応であり、且つ前記対価の支払者が前記対価を支払うのに充分な資産をシステム内に有している場合であり、前記発動が前記ブロックチェーン内に出現したならば前記対価が支払われる、請求項21に記載の方法。
- ブロックチェーン内の検証者の集合を、所与の入力に対してスマート契約の実行eを指定する少なくとも1個の確約された宣言的発動Iを含む宣言的発動の集合Sを検証すべく割り当て、Iがeの少なくともいくつかの関連結果rrに対する確約を含む方法であって、
前記検証者が前記集合Sを受信するステップと、
前記検証者が前記関連結果rrを計算すべく実行eを再構築するステップと、
前記検証者が、前記検証者のrrに対する個人化された確約を含む認証された応答を提供するステップとを含む方法。 - 割り当てられた検証者がSに基づいて、所与の暗号関数を介して疑似乱数的に選択される、請求項23に記載の方法。
- 少なくとも一人の検証者が、前記少なくとも1人の検証者の秘密鍵を用いる計算を介して前記少なくとも1人の検証者が選択されていることを判定することができ、前記少なくとも1人の検証者が他者に対して、前記少なくとも1人の検証者が選択されていることを証明することができる、請求項23に記載の方法。
- 前記S内の確約された宣言的発動Iが正しいと考えられるのは、Sに割り当てられた少なくとも所与の人数の検証者の応答が、Iで確約された前記関連結果rrに対する個人化された確約を含む場合だけである、請求項23に記載の方法。
- 宣言的スマート契約発動の集合Sが既に登録され、検証者の集合がSに割り当てられていて、前記集合Sが、所与の入力に対してスマート契約の実行eを指定する少なくとも1個の確約された宣言的発動Iを含み、Iがeの少なくともいくつかの関連結果rrに対する確約を含み、前記検証者が前記Sの発動に関する認証された応答を提供しているブロックチェーンにおいて、前記Sの発動の評決を前記ブロックチェーンに組み込む方法であって、
主体に、前記検証者の前記認証された応答を受信させるステップと、
前記主体に、前記Sの発動の正しさを推論させるステップと、
前記主体に、前記Sの発動の正しさに関する最終評決を前記ブロックチェーンに組み込ませるステップとを含む方法。 - Sに割り当てられた少なくとも所与の人数の前記検証者の応答が、Iに対して確約されたものと前記同じ関連結果rrに対する個人化された確約を含み、S内の前記確約された宣言的発動Iの最終評決が、Iが正しいことを示している、請求項27に記載の方法。
- 前記Iの正しさの最終評決が、他のユーザーに前記スマート契約の状態を更新させ、前記スマート契約の実行eの正味効果が発現したと思わせる、請求項28に記載の方法。
- 非一時的コンピュータ可読媒体で提供されるコンピュータソフトウェアであって、
請求項1~29のいずれか1項に記載の方法を実装する実行可能コードを含むコンピュータソフトウェア。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762567864P | 2017-10-04 | 2017-10-04 | |
US62/567,864 | 2017-10-04 | ||
US201762570256P | 2017-10-10 | 2017-10-10 | |
US62/570,256 | 2017-10-10 | ||
US201762580757P | 2017-11-02 | 2017-11-02 | |
US62/580,757 | 2017-11-02 | ||
US201762607558P | 2017-12-19 | 2017-12-19 | |
US62/607,558 | 2017-12-19 | ||
US201862632944P | 2018-02-20 | 2018-02-20 | |
US62/632,944 | 2018-02-20 | ||
US201862643331P | 2018-03-15 | 2018-03-15 | |
US62/643,331 | 2018-03-15 | ||
JP2020519361A JP7305627B2 (ja) | 2017-10-04 | 2018-10-04 | 宣言的スマート契約 |
PCT/US2018/054311 WO2019070938A1 (en) | 2017-10-04 | 2018-10-04 | INTELLIGENT DECLARATIVE CONTRACTS |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020519361A Division JP7305627B2 (ja) | 2017-10-04 | 2018-10-04 | 宣言的スマート契約 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023138978A true JP2023138978A (ja) | 2023-10-03 |
Family
ID=65994758
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020519361A Active JP7305627B2 (ja) | 2017-10-04 | 2018-10-04 | 宣言的スマート契約 |
JP2023106206A Pending JP2023138978A (ja) | 2017-10-04 | 2023-06-28 | 宣言的スマート契約 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020519361A Active JP7305627B2 (ja) | 2017-10-04 | 2018-10-04 | 宣言的スマート契約 |
Country Status (12)
Country | Link |
---|---|
US (1) | US20200313896A1 (ja) |
EP (1) | EP3692699A4 (ja) |
JP (2) | JP7305627B2 (ja) |
KR (1) | KR20200101328A (ja) |
CN (2) | CN114677135A (ja) |
AU (2) | AU2018346326B2 (ja) |
CA (1) | CA3078328A1 (ja) |
IL (1) | IL273767A (ja) |
MX (1) | MX2020003931A (ja) |
RU (1) | RU2020115149A (ja) |
SG (1) | SG11202002848VA (ja) |
WO (1) | WO2019070938A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7040218B2 (ja) * | 2018-03-29 | 2022-03-23 | 富士通株式会社 | ブロックチェーンプログラム及びブロックチェーン方法 |
CN108898390B (zh) * | 2018-06-27 | 2021-01-12 | 创新先进技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN109003078B (zh) | 2018-06-27 | 2021-08-24 | 创新先进技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN110300167B (zh) * | 2019-06-28 | 2020-07-31 | 京东数字科技控股有限公司 | 基于区块链的业务信息处理方法、设备及可读存储介质 |
CN111582844A (zh) * | 2019-08-22 | 2020-08-25 | 深圳市先河系统技术有限公司 | 基于区块链的手续费分配方法、装置及存储介质 |
US20230014140A1 (en) * | 2021-07-14 | 2023-01-19 | Fortior Blockchain, Lllp | Smart contract system using artificial intelligence |
CN114338006B (zh) * | 2021-12-24 | 2023-01-24 | 浙江大学 | 基于半可信硬件的互相关伪随机数的远程获取方法及装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590595B2 (en) * | 2002-02-14 | 2009-09-15 | Zachary Pessin | Apparatus and method of a distributed capital system |
US7809777B2 (en) * | 2005-07-01 | 2010-10-05 | Qnx Software Systems Gmbh & Co. Kg | File system having deferred verification of data integrity |
US7873683B2 (en) * | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US9501795B1 (en) * | 2010-08-23 | 2016-11-22 | Seth Gregory Friedman | Validating an electronic order transmitted over a network between a client server and an exchange server with a hardware device |
EP2634738A1 (en) * | 2012-03-02 | 2013-09-04 | Alcatel Lucent | Decentralized electronic transfer system |
GB201407614D0 (en) * | 2014-04-30 | 2014-06-11 | Piksel Inc | Content delivery system |
US20170140408A1 (en) * | 2015-11-16 | 2017-05-18 | Bank Of America Corporation | Transparent self-managing rewards program using blockchain and smart contracts |
US9992028B2 (en) * | 2015-11-26 | 2018-06-05 | International Business Machines Corporation | System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger |
GB2604540B (en) * | 2016-02-03 | 2023-01-11 | Luther Systems | System and method for secure management of digital contracts |
US20170243193A1 (en) * | 2016-02-18 | 2017-08-24 | Skuchain, Inc. | Hybrid blockchain |
US10387878B2 (en) * | 2016-02-22 | 2019-08-20 | Bank Of America Corporation | System for tracking transfer of resources in a process data network |
US10762504B2 (en) * | 2016-02-22 | 2020-09-01 | Bank Of America Corporation | System for external secure access to process data network |
US10475030B2 (en) * | 2016-02-22 | 2019-11-12 | Bank Of America Corporation | System for implementing a distributed ledger across multiple network nodes |
US10223685B2 (en) * | 2016-02-26 | 2019-03-05 | Arithmetic Operations Incorporated | Systems, methods, and media for pay-per-access micropayment-based web browsing and server applications |
US10063529B2 (en) * | 2016-03-28 | 2018-08-28 | Accenture Global Solutions Limited | Secure 3D model sharing using distributed ledger |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
US10198325B2 (en) * | 2016-05-24 | 2019-02-05 | Mastercard International Incorporated | Method and system for desynchronization recovery for permissioned blockchains using bloom filters |
US10204341B2 (en) * | 2016-05-24 | 2019-02-12 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees |
US10305694B2 (en) * | 2016-05-27 | 2019-05-28 | Mastercard International Incorporated | Method and system for efficient distribution of configuration data utilizing permissioned blockchain technology |
US10565570B2 (en) * | 2016-09-27 | 2020-02-18 | The Toronto-Dominion Bank | Processing network architecture with companion database |
CN106385319B (zh) * | 2016-09-29 | 2020-11-27 | 江苏通付盾科技有限公司 | 区块链网络中信息的验证方法及系统 |
CN106780033A (zh) * | 2016-12-16 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种基于联盟链的数字票据交易系统构建方法 |
AU2018230763A1 (en) * | 2017-03-08 | 2019-10-31 | Ip Oversight Corporation | System and method for creating commodity asset-secured tokens from reserves |
WO2018175666A1 (en) * | 2017-03-21 | 2018-09-27 | Dappsters, LLC | Blockchain systems and methods |
US10310918B2 (en) * | 2017-03-22 | 2019-06-04 | International Business Machines Corporation | Information sharing among mobile apparatus |
US20210176251A1 (en) * | 2017-05-30 | 2021-06-10 | Siemens Aktiengesellschaft | Access Control Method and Industrial Network Using a Blockchain for Access Control |
US10795977B2 (en) * | 2017-08-24 | 2020-10-06 | Oracle International Corporation | Digital asset traceability and assurance using a distributed ledger |
US20190147553A1 (en) * | 2017-11-14 | 2019-05-16 | TitleFlow LLC | Storing linked lists of mineral rights transactions in directed acyclic graphs of cryptographic hash pointers |
CA3088610A1 (en) * | 2018-01-17 | 2019-07-25 | Geeq Corporation | Blockchain methods, nodes, systems and products |
US11310032B2 (en) * | 2019-03-28 | 2022-04-19 | Advanced New Technologies Co., Ltd. | System and method for parallel-processing blockchain transactions |
-
2018
- 2018-10-04 CN CN202210270563.7A patent/CN114677135A/zh active Pending
- 2018-10-04 CN CN201880078255.6A patent/CN111567009B/zh active Active
- 2018-10-04 RU RU2020115149A patent/RU2020115149A/ru unknown
- 2018-10-04 WO PCT/US2018/054311 patent/WO2019070938A1/en unknown
- 2018-10-04 SG SG11202002848VA patent/SG11202002848VA/en unknown
- 2018-10-04 AU AU2018346326A patent/AU2018346326B2/en active Active
- 2018-10-04 US US16/651,627 patent/US20200313896A1/en not_active Abandoned
- 2018-10-04 MX MX2020003931A patent/MX2020003931A/es unknown
- 2018-10-04 JP JP2020519361A patent/JP7305627B2/ja active Active
- 2018-10-04 EP EP18865082.4A patent/EP3692699A4/en active Pending
- 2018-10-04 CA CA3078328A patent/CA3078328A1/en active Pending
- 2018-10-04 KR KR1020207012480A patent/KR20200101328A/ko not_active Application Discontinuation
-
2020
- 2020-04-02 IL IL273767A patent/IL273767A/en unknown
-
2023
- 2023-06-28 JP JP2023106206A patent/JP2023138978A/ja active Pending
- 2023-11-22 AU AU2023270268A patent/AU2023270268A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3692699A1 (en) | 2020-08-12 |
AU2018346326B2 (en) | 2023-08-24 |
CA3078328A1 (en) | 2019-04-11 |
RU2020115149A (ru) | 2021-11-08 |
JP2020537391A (ja) | 2020-12-17 |
CN114677135A (zh) | 2022-06-28 |
AU2023270268A1 (en) | 2023-12-07 |
JP7305627B2 (ja) | 2023-07-10 |
IL273767A (en) | 2020-05-31 |
US20200313896A1 (en) | 2020-10-01 |
WO2019070938A1 (en) | 2019-04-11 |
CN111567009B (zh) | 2022-07-12 |
MX2020003931A (es) | 2020-10-12 |
AU2018346326A1 (en) | 2020-04-16 |
CN111567009A (zh) | 2020-08-21 |
SG11202002848VA (en) | 2020-06-29 |
RU2020115149A3 (ja) | 2021-11-08 |
EP3692699A4 (en) | 2021-08-25 |
KR20200101328A (ko) | 2020-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023138978A (ja) | 宣言的スマート契約 | |
JP7407895B2 (ja) | 一般的な計算のためのブロックチェーン | |
Teutsch et al. | A scalable verification solution for blockchains | |
WO2018158936A1 (ja) | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム | |
Allombert et al. | Introduction to the tezos blockchain | |
CA3158874C (en) | Systems and methods providing specialized proof of confidential knowledge | |
CN111818185B (zh) | 启动智能合约的方法及装置、电子设备、存储介质 | |
CN108831001B (zh) | 基于区块链的节点随机选取方法、系统、节点、电子设备 | |
Le et al. | Proving conditional termination for smart contracts | |
CN112581110A (zh) | 燃料代扣方法及装置、电子设备、存储介质 | |
CN109727040B (zh) | 数据发布方法、数据调用方法、设备和存储介质 | |
Kuhn et al. | Distributed asymmetric verification in computational grids | |
Farokhnia | Lazy Contracts: Alleviating High Gas Costs by Secure and Trustless Off-chain Execution of Smart Contracts | |
Buterin et al. | Notes on Scalable Blockchain Protocols (verson 0.3) | |
BR112020006828A2 (pt) | contratos inteligentes declarativos | |
CN115809250A (zh) | 基于区块链的链上存储文件一致性评价方法及装置 | |
Andersen | Implementation of a tournament based distributed lottery on Ethereum | |
Heiberg et al. | Use Case Validation | |
CN118101316A (zh) | 基于多区块链网络的信息认证方法、装置、以及设备 | |
CN114594956A (zh) | 一种防止第三方访问目标应用的方法及系统 | |
CN111178861A (zh) | 一种区块链智能合约推广方法、电子装置及存储介质 | |
CN117474682A (zh) | 一种数据处理方法、装置、介质和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230728 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230728 |