JP2023513848A - ブロックチェーンに関連するサービスのプラットフォームのための計算サービス - Google Patents

ブロックチェーンに関連するサービスのプラットフォームのための計算サービス Download PDF

Info

Publication number
JP2023513848A
JP2023513848A JP2022549739A JP2022549739A JP2023513848A JP 2023513848 A JP2023513848 A JP 2023513848A JP 2022549739 A JP2022549739 A JP 2022549739A JP 2022549739 A JP2022549739 A JP 2022549739A JP 2023513848 A JP2023513848 A JP 2023513848A
Authority
JP
Japan
Prior art keywords
event
smart contract
blockchain
transaction
event stream
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
Application number
JP2022549739A
Other languages
English (en)
Inventor
アンドリュー・ジェームズ・ミー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
nChain Holdings Ltd
Original Assignee
nChain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB2002285.1A external-priority patent/GB202002285D0/en
Priority claimed from GBGB2013929.1A external-priority patent/GB202013929D0/en
Application filed by nChain Holdings Ltd filed Critical nChain Holdings Ltd
Publication of JP2023513848A publication Critical patent/JP2023513848A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

一態様において、本開示は、ブロックチェーンに関連するトランザクションの計算または実行サービスをクライアントのために実装または提供するための方法、デバイス、およびシステムを提案する。より詳細には、本開示は、クライアントからのハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式(HTTP)の要求に基づいて1つまたは複数のスマートコントラクトの実行を可能にするための方法に関する。方法は、要求内のスマートコントラクトSCにアクセスするステップと、ブロックチェーンを使用して実装されるイベントストリームESを特定するステップであって、イベントストリームESが、スマートコントラクトSCに固有であり、イベントストリームESが、スマートコントラクトSCの状態を表す、ステップとを含む。スマートコントラクトの現在の状態ESnが判定される。そして、方法は、スマートコントラクトSCの実行を呼び出すステップを含む。それから、方法は、受信された要求内で特定され、ブロックチェーントランザクションを作成することによって処理されるイベントストリームESの新しいイベントEnを処理することによってイベントストリームESを更新することを呼び出す。そして、ブロックチェーン上のスマートコントラクトの現在の状態が、新しいイベントEnに基づいて、ESn=ESn+1となるように更新される。次に、更新された現在の状態ESn+1に関連する結果が提供される。

Description

本開示は、概して、1つまたは複数のクライアントのための、分散型台帳、すなわち、ブロックチェーンに関連する1つまたは複数のサービスのプラットフォームを実装するための方法およびシステムに関する。特に、本開示は、イベントストリームまたは機械可読コントラクト(machine-readable contract)の実施などの、1つまたは複数のクライアントのための、ブロックチェーンに関連する複数の機能およびアプリケーションへのアクセスの提供に関するが、これに限定されない。
本明細書において、我々は、電子的な、コンピュータに基づく分散型台帳のすべての形態を含むように用語「ブロックチェーン」を使用する。これらは、コンセンサスに基づくブロックチェーンおよびトランザクションチェーンテクノロジー、許可型および非許可型台帳、共有台帳、パブリックおよびプライベートブロックチェーン、ならびにそれらのバリエーションを含む。その他のブロックチェーンの実装が提案され、開発されてきたが、ブロックチェーンテクノロジーの最も広く知られている応用は、ビットコイン台帳である。便宜上および説明の目的で本明細書においてはビットコインが参照される場合があるが、本開示は、ビットコインのブロックチェーンとの使用に限定されず、任意の種類のデジタル資産またはデジタル資産の表現に関連する代替的なブロックチェーンの実装およびプロトコルは、本開示の範囲に入ることに留意されたい。用語「クライアント」、「エンティティ」、「ノード」、「ユーザ」、「送信者」、「受信者」、「支払者」、「被支払者」は、本明細書においては、コンピューティングまたはプロセッサに基づくリソースを指す場合がある。用語「ビットコイン」は、本明細書においては、ビットコインプロトコルに由来するかまたはビットコインプロトコルに基づく任意のバージョンまたはバリエーションを含むように使用される。用語「デジタル資産」は、暗号通貨、財産の少なくとも一部を表すトークン、スマートコントラクト、ライセンス、すなわち、ソフトウェアライセンス、またはメディアコンテンツのDRM契約などの任意の譲渡可能な資産を指す場合がある。用語「デジタル資産」が、本明細書全体を通じて、あるエンティティから別のエンティティにトランザクションの支払いとして譲渡または提供されてよい価値に関連付けられる可能性がある商品を表すために使用されることは理解されるであろう。
ブロックチェーンは、ピアツーピアの電子台帳であり、その電子台帳は、ブロックから構成される、コンピュータに基づく非集中的な分散型システムとして実装され、そしてさらに、それらのブロックは、トランザクションから構成される。各トランザクションは、ブロックチェーンシステムの参加者の間でのデジタル資産の制御の移転を符号化し、少なくとも1つの入力および少なくとも1つの出力を含むデータ構造である。各ブロックは、ブロックチェーンの開始以来、ブロックチェーンに書き込まれたすべてのトランザクションの永久的で変更不可能な記録を作成するために鎖状になるように、前のブロックのハッシュを含む。トランザクションは、トランザクションの出力がどのようにしておよび誰によってアクセスされ得るかを指定する、トランザクションの入力および出力に埋め込まれた、スクリプトとして知られる小さなプログラムを含む。ビットコインプラットフォームにおいて、これらのスクリプトは、スタックに基づくスクリプト言語を使用して記述される。
トランザクションがブロックチェーンに書き込まれるためには、トランザクションが、「有効化」されなければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションは、ネットワークから拒否される。ノードにインストールされたソフトウェアクライアントが、未使用トランザクション(UTXO: unspent transaction)に対して、そのロックおよびロック解除スクリプトを実行することによってこの有効化作業を実行する。ロックおよびロック解除スクリプトの実行がTRUEと評価される場合、そのトランザクションは、有効であり、そして、トランザクションは、ブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションが、i)トランザクションを受信する第1のノードによって有効化され、トランザクションが有効化される場合、ノードはトランザクションをネットワーク内のその他のノードに中継し、ii)マイナーによって構築された新しいブロックに追加され、iii)マイニングされ、つまり、過去のトランザクションの公開台帳に追加されなければならない。
マイナーによって実行される作業の性質が、ブロックチェーンを維持するために使用されるコンセンサスメカニズムの種類に応じて決まることは理解されるであろう。プルーフオブワーク(PoW)が、元々のビットコインプロトコルに関連付けられるが、プルーフオブステーク(PoS)、委任型プルーフオブステーク(DPoS: delegated proof of stake)、プルーフオブキャパシティ(PoC: proof of capacity)、プルーフオブエラプストタイム(PoET: proof of elapsed time)、プルーフオブオーソリティ(PoA: proof of authority)などのその他のコンセンサスメカニズムが使用されてよいことは理解されるであろう。異なるコンセンサスメカニズムは、マイニングがノードの間にどのように分散されるかという点で異なり、ブロックを成功裏にマイニングする公算は、たとえば、マイナーのハッシュパワー(PoW)、マイナーによって保有される暗号通貨の量(PoS)、代行マイナー(delegate miner)に託された暗号通貨の量(DPoS)、暗号パズルの所定の解を記憶するマイナーの能力(PoC)、マイナーにランダムに割り振られた待ち時間(PoET)などに応じて決まる。通常、マイナーは、ブロックをマイニングすることに関するインセンティブまたは報酬を提供される。たとえば、ビットコインのブロックチェーンは、マイナーに新たに発行された暗号通貨(ビットコイン)とブロック内のトランザクションに関連する手数料(取引手数料)とを報酬として与える。ビットコインのブロックチェーンに関しては、発行される暗号通貨の量が、時間の経過とともに減少し、インセンティブは、最終的には取引手数料のみからなる。したがって、取引手数料の処理は、ビットコインのブロックチェーンなどのパブリックブロックチェーンにデータをコミットする(commit)ための基礎となるメカニズムの一部であることが理解されるであろう。
上述のように、所与のブロック内の各トランザクションは、ブロックチェーンシステムの参加者の間のデジタル資産の制御の移転を符号化する。デジタル資産は、必ずしも暗号通貨に対応するとは限らない。たとえば、デジタル資産は、ドキュメント、画像、物理的な物体などのデジタル表現に関連する場合がある。マイナーへの暗号通貨および/または取引手数料の支払いは、単純に、必要な作業を行うことによってブロックチェーンの有効性を維持するためのインセンティブとして作用する可能性がある。ブロックチェーンに関連する暗号通貨は、マイナーのセキュリティとして働き、ブロックチェーン自体は、主に暗号通貨以外のデジタル資産に関連するトランザクションの台帳であることがある。場合によっては、参加者の間の暗号通貨の譲渡は、トランザクションの台帳を維持するためにブロックチェーンを使用するエンティティとは異なるおよび/または無関係なエンティティによって処理されることがある。
UTXOとしてブロックチェーンに記憶されると、ユーザは、関連するリソースの制御を、別のトランザクションの入力に関連する別のアドレスに移転することができる。この移転は、通常、デジタルウォレットを使用して行われるが、絶対にそうであるとは限らない。このデジタルウォレットは、デバイス、物理的な媒体、プログラム、デスクトップ、ラップトップ、もしくはモバイル端末などのコンピューティングデバイス上のアプリケーション(アプリ)、またはインターネットなどのネットワーク上のドメインに関連付けられた遠隔でホストされたサービスであってよい。デジタルウォレットは、公開鍵および秘密鍵を記憶し、ユーザに関連するリソース、トークン、および資産などの所有権を追跡し、デジタル資産を受け取るかまたは消費し、暗号通貨、ライセンス、財産、もしくはその他の種類のリソースなどのデジタル資産に関連する場合があるトークンを転送するために使用され得る。
ブロックチェーンテクノロジーは、暗号通貨の実装に関して最も広く知られているが、デジタル起業家たちは、新しいシステムを実装するための、ビットコインが基づいている暗号セキュリティシステムと、ブロックチェーン上に記憶され得るデータとの両方の使用を模索している。ブロックチェーンテクノロジーは、暗号通貨の領域に限定されない自動化されたタスクおよびプロセスにブロックチェーンが使用される可能性がある場合、非常に有利である。そのようなソリューションは、それらの用途をより広げながら、ブロックチェーンの利点(たとえば、イベントの永久的な改ざん防止(tamper-proof)記録、分散処理など)を利用することができる。
現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンの使用である。機械可読コントラクトや合意の条項の実行を自動化するために設計されたコンピュータプログラムが、存在する。自然言語で書かれた従来の契約とは異なり、スマートコントラクトは、結果を生成するために入力を処理することができ、それらの結果に応じてアクションを実行させることができる規則を含む機械で実行可能なプログラムである。ブロックチェーンに関連する関心を集める別の分野は、ブロックチェーンを介して実世界のエンティティを表現し、譲渡するための「トークン」(または「カラードコイン(coloured coin)」)の使用である。潜在的に機密のまたは秘密の事柄が、識別可能な意味または価値を持たないトークンによって表現され得る。したがって、トークンは、実世界の事柄がブロックチェーンから参照されることを可能にする識別子として働く。
上述の例またはシナリオは、ブロックチェーンの利点を利用してイベントの永久的な改ざん防止記録を提供する一方で、クライアント、クライアントエンティティ、コンピューティングデバイス、またはクライアントに関連する端末が、デジタル資産を管理し、たとえば、BSV(Bitcoin Satoshi's Vision)ブロックチェーンによって使用される楕円曲線デジタル署名アルゴリズム(ECDSA)の暗号鍵を管理するための機能を実装するためのデジタルウォレットなどのソフトウェアおよび/もしくはハードウェアまたはプロセッサ/モジュールを含むかまたは実装することを必要とする。加えて、クライアントデバイスがブロックチェーンのトランザクションの構築を実施し、BSVライブラリにアクセスすることができるための要件も、存在する。したがって、クライアントは、そのような機能を実施するための処理を含む必要があるだけでなく、実世界の資産取引を表すスマートコントラクトまたはトークンに関連するデータおよび/またはデジタル資産をクライアントが送信、受信、および閲覧するためにブロックチェーンネットワークを利用することができるようになる前に、そのようなプロセスに関して適切なセキュリティ対策が実施されることを保証する必要もある。
英国特許出願第2002285.1号 米国特許出願第16/384696号 英国特許出願第1907180.2号
したがって、高度な計算が可能であるかどうかにかかわらず、任意のクライアントが、ブロックチェーンに関連する有用なアプリケーションに、計算上および機能上の負担がより少ない簡単で、高速で、正確で、信頼性が高く、安全な方法で即座にアクセスし、インタラクションすることを可能にする、安全で、複雑でなく、ユーザフレンドリーで、効率的で、堅牢な技術を実装することが望ましい。より詳細には、分散型台帳(ブロックチェーン)テクノロジー、および記録の向上したセキュリティ、透明性、および信頼性という利点を利用して、任意のクライアントコンピューティングデバイスが、クライアントに関連する任意のデータ、イベント、またはデジタル資産が即座に安全にマイニングされるかまたは簡単にブロックチェーンに書き込まれ得ることを保証することを可能にし、それによって、必要に応じて作成されるか、書き込まれるか、更新されるか、読み取られるか、または閲覧され得る、その永続的で、改ざんに耐性があり、監査可能な記録を提供する、複数のブロックチェーンに関連するサービスまたはアプリケーションのための共通のプラットフォームまたはインターフェースを提供したいという要望が存在する。
今、そのような改善されたソリューションが考案された。本開示は、クライアントに関連するデータまたは情報が、ブロックチェーンに関連するすべての利点を利用することが依然として可能でありながら、そのようなクライアントがブロックチェーンを使用するためのいかなる処理または機能を実施することも必要とせずに、ブロックチェーンに関連する1つまたは複数のサービスのためのアプリケーションプログラミングインターフェース(API)を提供する方法、デバイス、およびシステムによって簡単で、安全で、即座にブロックチェーンに書き込まれるかまたはブロックチェーンから取得される可能性がある1つまたは複数の技術を提案することによって上記の技術的問題に対処する。
第1の態様において、本開示は、クライアントのためにブロックチェーンに関連するトランザクションのための計算もしくはソフトウェア実行サービスを実装または提供するための方法、デバイス、およびシステムを提案する。より詳細には、本開示は、クライアントからのハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式(HTTP)の要求に基づいて1つまたは複数のスマートコントラクトの実行を可能にするための方法に関する。方法は、要求内のスマートコントラクトSCにアクセスするステップと、ブロックチェーンを使用して実装されるイベントストリームESを特定するステップであって、イベントストリームESが、スマートコントラクトSCに固有であり、イベントストリームESが、スマートコントラクトSCの状態を表す、ステップとを含む。スマートコントラクトの現在の状態ESnが判定される。そして、方法は、スマートコントラクトSCの実行を呼び出すステップを含む。それから、方法は、受信された要求内で特定され、ブロックチェーントランザクションを作成することによって処理されるイベントストリームESの新しいイベントEnを処理することによってイベントストリームESを更新することを呼び出す。そして、ブロックチェーン上のスマートコントラクトの現在の状態が、新しいイベントEnに基づいて、ESn=ESn+1となるように更新される。次に、更新された現在の状態ESn+1に関連する結果が提供される。
第2の態様において、本開示は、ブロックチェーンに関連するスマートコントラクトにアクセスするための方法、デバイス、およびシステムを提案する。より詳細には、第2の態様の方法はスマートコントラクトSCを実行するためのプラットフォームに関連するエンドポイントを取得または特定するステップと、スマートコントラクトSCに関連する1つまたは複数のイベントEnの要求をプラットフォームに送信するステップであって、要求が、HTTP形式に基づいて送信される、ステップとを含む。方法は、スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび検証ツールを取得するステップを含む。方法は、要求されたイベントEnに関連するブロックチェーントランザクションの出力スクリプトに基づく結果を受信するステップであって、前記結果が、スマートコントラクトSCの更新された状態を表し、結果が、HTTP形式を使用して受信される、ステップも含む。
本明細書全体を通じて、単語「~を含む(comprise)」、または「~を含む(includes)」、「~を含む(comprises)」、もしくは「~を含む(comprising)」などの変化形は、記載の要素、整数、ステップ、または要素、整数、もしくはステップのグループの包含を示唆するが、いかなるその他の要素、整数、ステップ、または要素、整数、もしくはステップのグループの除外も示唆しないと理解されるものとする。
本開示の態様および実施形態が、単に例として、添付の図面を参照して以降で説明される。
ブロックチェーンに関連する複数のサービスのためのプラットフォームの概要を示す概略図である。 第1の態様による、図1に見られる複数のサービスのプラットフォームの計算サービスの構成要素を示す概略図である。 第1の態様による、図1aに見られる計算サービスのエグゼキュータ(executor)プラットフォームまたはプロセッサの構成要素を示す概略図である。 プラットフォームサービスに関連する1つまたは複数のプロセッサによって実施される、1つまたは複数のスマートコントラクトの実行を可能にする方法を示す流れ図である。 プラットフォームサービスに関連する1つまたは複数のプロセッサによって実施される、スマートコントラクトに関するイベントストリームを作成するための方法であって、イベントストリームが、ブロックチェーンに関連付けられる、方法を示す流れ図である。 プラットフォームサービスに関連する1つまたは複数のプロセッサによって実施される、スマートコントラクトに関するイベントストリームを更新するための方法であって、イベントストリームが、ブロックチェーンに関連付けられる、方法を示す流れ図である。 プラットフォームサービスに関連する1つまたは複数のプロセッサによって実施される、スマートコントラクトに関するイベントストリームを終了するための方法であって、イベントストリームが、ブロックチェーンに関連付けられる、方法を示す流れ図である。 クライアントに関連する1つまたは複数のプロセッサによって実施される、第2の態様による、ブロックチェーンに関連付けられるスマートコントラクトにアクセスするための方法を示す流れ図である。 スマートコントラクトの実行の例としてゲームの実行を示す概略図である。 例示的なスマートコントラクトの1つの状態に関するステートマシンを示す図である概略図である。 例示的なスマートコントラクトの単一のイベントに関する状態遷移を示す概略図である。 例示的なスマートコントラクトに関するイベントに関連するデータおよび/またはプロセスフロー示すシーケンス図である。 本開示の様々な態様および実施形態が実装され得るコンピューティング環境を示す概略図である。
本開示は、概して、ブロックチェーンに関連する複数のサービスのプラットフォームの提供に関し、プラットフォームは、複数のクライアントのために提供され、アプリケーションプログラミングインターフェース(API)に関連する少なくとも1つのプラットフォームプロセッサによって実装される。複数のサービスのそのようなプラットフォームの例が、nChain Holdings Limitedによって2020年2月19日に出願された英国特許出願第2002285.1号に記載されている。
有利なことに、そのようなプラットフォームプロセッサAPIは、ウェブに基づくインタラクションインターフェースを可能にし、すなわち、ウェブに基づくサービス用の標準的なインターネット通信プロトコルを使用してインターネット上で通信が行われる可能性があるように、1つまたは複数のクライアントのためのウェブサービスとして実装されてよい。たとえば、HTTP、HTTPSなどのアプリケーションレベル、またはクライアントとサーバ(この場合はプラットフォームサービス)との間の層におけるHTTPメッセージまたは要求は、TCP/IP等のトランスポート層プロトコルに基づいて送信または受信されてよい。HTTP送信プロトコルまたはHTTP APIへの言及は、本明細書においては、TCP/IP、UDP、HTTPSなどのすべての標準的なインターネット通信プロトコルも包含する。
プラットフォームプロセッサは、HTTP APIエンドポイントとして実装されるかまたはHTTP APIエンドポイントに関連付けられてよい。一部の例において、プラットフォームプロセッサは、具象状態転送(REST: Representational State Transfer)エンドポイントとして実装される。有利なことに、APIは、RESTエンドポイントとして実装されてよく、それによって、クライアントがHTTPまたはHTTPSなどの標準的なインターネットまたはウェブに基づくプロトコルを使用して通信することをやはり可能にする。有利なことに、1つまたは複数のクライアントのためにAPIとして提供されるプラットフォームを実装することによって、クライアントに関連する1つまたは複数のプロセッサが、ブロックチェーンにデータを書き込むかまたはデータにアクセスするために、プラットフォームプロセッサによって提供されるウェブサービスにサインアップするかまたはそのようなウェブサービスを使用することを可能にする。プラットフォームに関連する1つまたは複数のプロセッサは、ウェブサービスおよびウェブに基づくインタラクションを開発するためのアーキテクチャの様式であるRESTなどであるがこれに限定されない規格に基づくインターフェース設計を使用して、提供されているサービスのうちの1つまたは複数を実装することができる。有利なことに、クライアントは、したがって、HTTPまたは同様のインターネットコマンドによってプラットフォームサービスと通信することができる。より有利なことに、提供されるサービスのいずれに関しても、BSV、ビットコイン、ブロックチェーンの知識、ECDSA、またはその他の暗号鍵管理ライブラリ、またはデジタルウォレットソフトウェアなどのトランザクション構築ソフトウェアがクライアントによって実装される必要はない。1つまたは複数の処理リソースまたはユーザ端末を使用するクライアントは、単純に、クライアントのアイデンティティを検証するためのパスワード保護認可または標準的な公開鍵基盤(PKI)などのいくつかの知られている認証技術によってプラットフォームを使用するための登録をすることができる。そのとき、クライアントは、単純に、基本的なHTTPなどによってプラットフォームサービスと通信することできるべきである。
プラットフォームによって提供され得るブロックチェーンに関連するサービスのいくつかの例は、以下である。
- ブロックチェーンの状態を変更するために、ブロックチェーンにデータを書き込む/送るためのデータサービス
- ブロックチェーンの現状を反映するデータを読む/取得するためのデータサービス
- ブロックチェーンに関連するトランザクションのための、簡略化された支払い検証に関連するサービス
- ブロックチェーンに関連する1つまたは複数のイベントストリームおよび/または機械可読コントラクトの管理に関連するサービス
- 複数のクライアントのための、デジタルウォレットフレームワークの管理に関連するサービス
プラットフォームプロセッサに関連する複数のプロセッサまたはウェブサーバが存在してよい場合、HTTP送信プロトコル形式でクライアントから要求を受信し、受信された要求をリモートプロシージャコール(RPC)形式に変換し、受信された要求で特定されたサービスを実施するように構成される、複数のプロセッサのうちの所与のプロセッサにRPC要求を送信するためのアプリケーションプログラミングインターフェース(API)コンバータが、提供される場合がある。逆のフロー経路で、所与プロセッサからRPC形式で関連する応答が受信され、HTTPまたは同様の送信プロトコルを使用してクライアントに送信されるように変換される場合がある。これは、ウェブに基づくプラットフォームAPIを使用し、上述のサービスを実装するが、ウェブサービス用のインターネットプロトコル通信規格を使用して通信しないノードまたはサーバのうちのいずれかとの相互運用性をシームレスに提供して、クライアントが単純なHTTPを介してブロックチェーンに関連する要求を伝達することを可能にするので有利である。実装されるAPIコンバータは、HTTPSからRPCおよびその逆の変換に限定されず、またはさらに言えば、その他のウェブに基づくプロトコルから、上述のサービス、所与の暗号通貨用のネットワーク、もしくはそれ以外に想定され得るデジタル資産のうちの1つまたは複数を実装するプラットフォームプロセッサによってサポートされる代替的な通信プロトコルへのコンバータである。逆のフロー経路は、対応するブロックチェーンのトランザクションに関連する応答をそれぞれのプロセッサからRPC形式で受信し、それに応じて、クライアントに送信するためにそれぞれの応答をHTTPを使用して変換することを含む。したがって、提案されるインターフェースをプラットフォームプロセッサによって有利に実装することは、クライアントおよびマイナーが異なるワイヤレスデータ通信プロトコルおよびメカニズムを使用するときに、ブロックチェーンにトランザクションを送るためのシームレスな通信を可能にする。
一部の例において、HTTP APIは、プラットフォームプロセッサに関連するハンドルまたはエイリアスに関連付けられる場合がある。そのようなソリューションが、両方ともnChain Holdings Limitedの名義で、米国特許出願第16/384696号および英国特許出願第1907180.2号に提案されている。これらの出願は、エンティティの公開アドレスの代わりにアドレス指定のためにエイリアスが使用される、「bsvalias決済サービス」と呼ばれる、エイリアスに基づく決済サービスおよび関連プロトコルを記載する。この場合、エイリアスは、プラットフォームプロセッサに固有であり、プラットフォームプロセッサに関連する1つまたは複数の能力に関する詳細を提供する定義されたまたはよく知られているロケーションからアクセス可能な機械可読リソースを用いる、bsvaliasなどのエイリアスに基づくアドレス指定サービスによって提供される。また、エイリアスは、認証のための非対称暗号鍵ペアに関連付けられてよい。
第1の態様において、本開示は、ブロックチェーンに関連する1つまたは複数のスマートコントラクトの実行を可能にするためのコンピュータによって実施される方法を提供し、方法は、クライアントがスマートコントラクトを実行するためのサービスにアクセスすることを可能にするために、アプリケーションプログラミングインターフェース(API)に関連するプラットフォームプロセッサによって実施される。これは、クライアントのためにブロックチェーンに関連する実行または動作を容易にすることに関連するので、上で説明されたプラットフォームの実行またはコンピュータサービスに関する。APIは、プラットフォームプロセッサに関して上で説明されたように、HTTP APIに基づくか、またはエイリアスに基づくアドレス指定のエンドポイントに基づく場合がある。
第1の態様の方法は、クライアントから要求を受信するステップを含み、要求は、スマートコントラクトSCに関連する。スマートコントラクトまたは機械可読コントラクトは、2つ以上のエンティティの間のコントラクトまたは合意の交渉または実行をデジタルで促進するか、検証するか、または施行するように意図されるコンピュータプロトコルまたはソフトウェアであることが知られている。クライアントは、上で説明されたプラットフォームサービスに関連する複数のクライアントのうちの1つであってよい。一部の実施形態において、クライアントからの要求は、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式に基づく。実行されるべきスマートコントラクトが、要求から特定される。たとえば、これは、要求内の識別子またはキーワードに基づいてよい。方法は、要求に関連するスマートコントラクトSCソフトウェアにアクセスすることを含む。スマートコントラクトは、プラットフォーム内に設けられるコントラクトストアなどのストレージモジュールからアクセスされてよく、またはプラットフォームプロセッサによってアクセスされ得るサーバ上に遠隔で置かれるかもしくはホストされてよい。
それから、方法は、ブロックチェーンに関連するイベントストリーム(ES)を特定することを含み、イベントストリームESは、スマートコントラクトSCに固有であり、スマートコントラクトSCの状態を表す。ブロックチェーンにおいてイベントストリームを実装するための例示的なメカニズムが、nChain Holdings Limitedによって2020年2月19日に出願された英国特許出願第2002285.1号に記載されている。イベントストリームは、順に実行されたイベントの正確な順番のログを提供し、ブロックチェーン上に実装される。要求のスマートコントラクトSCに関連するイベントストリームESは、ブロックチェーンから直接取得されてよく、またはこれは、ブロックチェーン上のイベントストリームを複製するオフチェーンログもしくはデータベースから取得されてよい。たとえば、プラットフォームプロセッサは、任意の所与の時間にブロックチェーン内のそれぞれのイベントストリームESに記録されたスマートコントラクトSCの現在の状態を提供するかまたは示すように構成されたスナップショットインスタンスデータベースに関連付けられる場合がある。複数のクライアントのうちの所与のクライアントに関連付けられるスマートコントラクトごとに1つのイベントストリームのみが、存在することになる。一部の実施形態において、複数のうちの各クライアントは、それぞれのクライアントに関連付けられる特定のスマートコントラクトSCを特定するために使用されてよいアカウントまたは識別子に関連付けられる場合がある。
一部の実施形態において、イベントストリームは、有限個の状態を有するシステムを表すよく知られているコンピュータ用語であり、ある段階から次の段階に遷移するための遷移関数またはトリガイベントを有する、所与の時間にただ1つの状態にある可能性がある決定性有限オートマトン(DFA)などの有限状態機械(FSM)としてブロックチェーン上に実装される。一部の実施形態において、そのようなイベントストリームは、技術的プロセスの制御手段または技法を表すのに有用である。イベントストリームESは、ブロックチェーン上の機械可読コントラクトまたはスマートコントラクトを表し、有利なことに、スマートコントラクトSCの過去および現在の状態の不変の記録が、ブロックチェーンに書き込まれる。一部の実施形態において、クライアントから受信される要求は、スマートコントラクトSCの状態を変更するなど、イベントストリームESにおいて状態遷移が行われることを可能にするために、トリガイベントを含む。
第1の態様の方法は、スマートコントラクトSCの現在の状態ESnを判定するステップを含む。これは、それに関連するイベントストリームESに基づいて判定される。SCの現在の状態は、ESnとして示され、nは、0からNまでの整数であり、各整数nは、スマートコントラクトSCに関連する現在の状態またはイベントの現在の数を表し、Nは、nの最大のまたは最終的な値または状態を表す。一部の実施形態において、現在の状態の判定は、イベントストリームESに関連する直近の結果に基づく現在の状態のインジケーションまたは記録に基づいてよい。上述のように、前記結果は、スマートコントラクトSCの状態を表し、これは、ブロックチェーン上、またはスマートコントラクトSCに固有のイベントストリームESに関連するデータに関するイベントログなどの、イベントストリームESのための1つまたは複数の別個のオフチェーンストレージリソースに記憶されてよい。
一部の実施形態において、それぞれのスマートコントラクトSCに関するイベントストリームESは、イベントストリームESに関連する先のまたは前のブロックチェーントランザクションの識別子に基づいて特定されてよい。一部の実施形態においては、要求のスマートコントラクトSCに関して特定されたイベントストリームがない場合、またはスマートコントラクトSCに関連するイベントストリームESに関して特定された以前の状態がない場合、これは、現在の状態が最初の状態であり、すなわち、n=0であるという判定であり、スマートコントラクトに関連するクライアントに関して新しいイベントストリームが作成されることになる。一部の実施形態において、現在の状態は、直接ブロックチェーンからのイベントストリームESから取り出されるかまたは読み出されてもよい。これは、プラットフォームプロセッサによって提供される複数のサービスのうちのサービスである場合がある、上述のようなデータリーダによって実行されてよい。
それから、本開示の方法は、受信された要求に基づいてスマートコントラクトSCの実行を呼び出すことを含む。一部の実施形態において、スマートコントラクトSCに関するイベントストリームESが特定されるかまたは作成されると、スマートコントラクトSCのソフトウェアコードまたは論理の実行が、自動的にトリガされる。一部の実施形態において、クライアントの要求に従った実行は、プラットフォームに関連する1つまたは複数のプロセッサによって実行されてよい。その他の実施形態において、スマートコントラクトのコードまたは論理の実行は、サーバレス実行技術に基づいてよく、プラットフォームプロセッサが、使用可能な複数のサーバまたはサーバのプールの中から利用可能なサーバを特定するように構成される。この場合、必要とされる任意のAPIおよび/またはドライバおよび/または実行可能コードなどが、スマートコントラクトSCに関連する1つまたは複数のソフトウェアルーチンまたはプログラミング命令を実行するために利用可能なサーバに提供される。
方法は、受信された要求に基づいてスマートコントラクトSCの状態をイベントストリームが反映するように、スマートコントラクトSCに関連するイベントストリームESの処理または更新を呼び出すステップを含む。これは、イベントストリームの新しいイベントEnを処理することを含む。新しいイベントEnは、スマートコントラクトSCに関するクライアントからの受信された要求に基づく。これは、スマートコントラクトに関する要求に関連するイベントデータであってよい。一部の実施形態におけるこの同じイベントは、イベントストリームがそれに関連し、スマートコントラクトのSCの段階を追跡するので、上述のスマートコントラクトSCの実行のために使用されるものである。一部の実施形態において、スマートコントラクトSCおよびイベントストリームを呼び出す上記ステップは、それぞれの事柄が特定されるとすぐに、イベントデータに基づいて並行してまたは同時に行われる。一部の実施形態において、イベントストリームESは、スマートコントラクトSCの論理が実行されるとすぐに処理される。一部の実施形態において、要求に基づく新しいイベントEnは、スマートコントラクトの実行によってイベントストリームに関して特定されてよい。したがって、これによって、スマートコントラクトソフトウェア自体が、イベントストリームESの入力とみなされてよく、いかなるデータが処理されるよりも前に公証される(notarised)かまたはイベントストリームに保存される。これは、クライアントのために新しいスマートコントラクトSCを初期化することに当てはまる場合がある。
一部の実施形態において、スマートコントラクトに関連するイベントストリームESの処理または更新を呼び出すステップは、プラットフォームプロセッサによって実行される。その他の実施形態において、イベントストリームESの処理または更新を呼び出すステップは、ブロックチェーンに関連するイベントストリームESにデータを書き込むことによって新しいイベントEnを処理するために、上述のようにプラットフォームプロセッサに関連するデータライタまたはデータサービスにアクセスするステップをさらに含む。
それから、方法は、ブロックチェーンに関連するイベントストリームESに関して今処理された新しいイベントEnに基づいて、スマートコントラクトの更新された現在の状態ESn+1を取得することを含む。それから、方法は、スマートコントラクトSCに関するESn=ESn+1である更新された現在の状態に基づく結果を記憶または提供することを含む。一部の実施形態において、結果は、HTTP送信形式でクライアントに直接提供されてよい。
有利なことに、第1の態様は、スマートコントラクトの実行のために、イベントストリームに関連するイベントの連続的な発生を確認する改ざん防止記録もしくはログまたは証明書を確立および/または維持/更新することを可能にし、イベントは、所与のスマートコントラクトに関する受信されたクライアントの入力に基づく。したがって、本開示は、ブロックチェーンを使用して実装され、イベントストリームESに関連しているスマートコントラクトSCに関連するイベントの改ざん防止ログまたは記録を自動的に作成するイベントストリームESの処理、すなわち、作成、更新、および/または終了を可能にするための方法、デバイス、およびシステムを提案する。
一部の実施形態において、結果は、上述のスマートコントラクトのためのスナップショットインスタンスデータベースに、またはスマートコントラクトSCの実行を追跡するイベントストリームESのための別個のオフチェーンログに記憶されてよく、それぞれの記憶されるイベントストリームは、所与のスマートコントラクトに固有である。有利なことに、オフチェーンのイベントログかまたはインスタンススナップショットデータベースかのどちらかにスナップショットとして結果を提供することは、ブロックチェーンのイベントストリームに関連するトランザクションを取得する必要なしに、(アクセスが提供または許可されていることを条件として)クライアントまたは任意の利害関係のある第三者などの任意のその他のエンティティによってスマートコントラクトSCの状態が容易に独立して検証可能となることを可能にする。
第1の態様の一部の実施形態においては、クライアントからの要求の受信に応じて、方法は、スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび/または検証ツールをクライアントに提供することを含む。これは、ソフトウェア開発キットの形態で提供されてよい。有利なことに、ソフトウェアライブラリは、所与のイベントに基づいてスマートコントラクトの状態またはスナップショットを独立して取得することができるようにイベントストリームを再生するための機能をクライアントに提供する。クライアントに提供される検証ツールは、有利なことに、クライアントがスマートコントラクトの回復または再生されたスナップショットを、取得される、すなわち、スマートコントラクトSCに関してブロックチェーンに記憶されたイベントストリームESに基づく結果と比較することを可能にする。一部の実施形態において、検証ツールは、再生または回復されたイベントストリームを、オフチェーンストレージログまたはインスタンススナップショットデータベースに記憶される可能性があるスマートコントラクトの現在のスナップショットと照合して、それらが一致するかどうかを検証することも可能にする。一部の実施形態において、検証ツールは、たとえば、監査が必要とされる場合、クライアントがブロックチェーン内のイベントストリームESに関連するデータとの比較を実行することも可能にする場合がある。再現または回復されたイベントストリームと取得された結果とが一致する場合、取得された結果がブロックチェーンに記録されている内容と一致しており、クライアントに到達するときにもしくは到達するまでに悪意のある者によって改ざんされていないことが立証され得る。再現されたイベントストリームが、取得された結果、またはスマートコントラクトSCのイベントストリームESを反映する、オフチェーンストレージに記憶されている結果のスナップショットと一致しない場合、これは、結果がスマートコントラクトの状態を正確に反映していない可能性があるというインジケーションである場合がある。一部の実施形態においては、回復されたイベントストリームを使用する比較が一致しないとすれば、検証ツールに関連するそのような比較に続いて、クライアントのために生成されるエラー通知またはメッセージが存在する場合がある。この食い違いは、場合によってはプラットフォームプロセッサにも通知される場合がある。
プラットフォームプロセッサにおいて受信されたクライアントの要求の一部のイベントデータに基づいて新しいイベントEnを処理することに関連するステップが、以降で説明される。
第1の態様の一部の実施形態において、n=0であると判定される場合、新しいイベントEnが、スマートコントラクトSCに関連するそれぞれのイベントストリームESを作成するための最初のイベントとして特定される。この場合、新しいイベントEnは、プラットフォームプロセッサもしくは計算サービスモジュールのための特定のエグゼキュータプラットフォーム、またはプラットフォームに関連するサービスのうちの1つである場合もあるデータライタモジュールによって実施されてよい以下のステップによって処理される。スマートコントラクトSCに関して、ダスト(dust)出力である第1の未使用出力を含む第1のブロックチェーントランザクションTX0が作成される。本開示のためのブロックチェーントランザクションの文脈におけるブロックチェーントランザクションダストまたは単に「ダスト」は、低いまたは極小の値の出力を有するデジタル資産または暗号通貨に関する消費可能なトランザクションであると理解され、つまり、値は、ブロックチェーンにおいて出力をマイニングするための手数料よりもはるかに少ない場合がある。このダスト出力は、消費され得る暗号通貨またはデジタル資産の出力の最小値であってよい。一部の実施形態において、そのようなダストトランザクション、すなわち、その出力においてデジタル資産の最小値の譲渡を処理するトランザクションに関連するデジタル資産または暗号通貨資金は、プラットフォームプロセッサによって提供または管理されてよい。言い換えると、ブロックチェーントランザクションに関して本開示において言及されるダスト出力は、トランザクションに関する値の制限未満の値を有するデジタル資産に関連付けられ、すなわち、おそらく、ダスト出力の値は、たとえば、そのようなトランザクションを消費するために必要とされる可能性があるマイニング手数料未満である。
Nがnの最終値または最大値であるとして、0<n<Nと判定される場合、Enは、スマートコントラクトSCに関連する既存のイベントストリームESを修正するためのイベントとして特定される。この場合、新しいイベントEnは、プラットフォームプロセッサもしくは計算サービスモジュールのための特定のエグゼキュータプラットフォーム、またはプラットフォームに関連するサービスのうちの1つである場合もあるデータライタモジュールによって実施されてよい以下のステップによって処理される。同じイベントストリームの前のトランザクションに関連するダスト出力を消費する第1の入力、現在のトランザクションのダスト出力である第1の未使用トランザクション出力、および現在のイベントEnを表すイベントデータに関連する最終的な未使用トランザクション出力を含む現在のブロックチェーントランザクションTXnが、作成される。一部の実施形態において、イベントデータは、データキャリア要素に含まれる。これは、トランザクションの消費不可能なOP-RETURN出力である場合がある。一部の実施形態において、現在のブロックチェーントランザクションの最終的な未使用トランザクション出力内のイベントEnに関するイベントデータは、イベントデータのハッシュを含む。有利なことに、これは、イベントストリームESのイベントデータの内容を非公開に保ち続ける。一部の実施形態において、前記イベントデータのハッシュは、プラットフォームプロセッサによって適用され、有利なことに、それによって、プラットフォームサービスまたはプロセッサがそのようなイベントデータを非公開で保持することを可能にする。その他の実施形態において、前記イベントデータのハッシュは、プラットフォームプロセッサによって受信される要求に含められる前にクライアントデバイスによって適用される。有利なことに、これは、クライアントが要求内のイベントまたはイベントに関連するデータを非公開で保持し、そのデータをプラットフォームとさえ共有しないことを可能にする。その他の実施形態において、最終的な未使用トランザクション出力内のイベントEnに関するイベントデータは、ブロックチェーンに書き込まれるかまたは送られると、ブロックチェーン上で公開される生イベントデータを含む。
n=Nであると判定される場合、Enは、スマートコントラクトSCに関連するイベントストリームESを終了させるための最終的なイベントとして特定される。この場合、新しいイベントEnは、プラットフォームプロセッサもしくは計算サービスモジュールのための特定のエグゼキュータプラットフォーム、またはプラットフォームに関連するサービスのうちの1つである場合もあるデータライタモジュールによって実施されてよい以下のステップによって処理される。イベントストリームの前のトランザクションに関連するダスト出力を消費する第1の入力と、定義されたダスト出力の制限を上回る、すなわち、デジタル資産または暗号通貨の定義されたまたは最小の値を上回るデジタル資産に関連する第1の未使用トランザクション出力とを含む最終的なブロックチェーントランザクションTXNが、作成される。有利なことに、ダスト出力がないことは、これが、追跡すべきものがイベントストリームにもうないこと、すなわち、シーケンスにさらなるイベントがないことを表すので、この場合、イベントストリームの終了を知らせる。第1の出力がダストの制限を上回るという規定は、チェーンの終わりを示すためである。さらに、最終的なブロックチェーントランザクションは、いかなるイベントデータ出力も持たず、すなわち、データキャリア要素が存在せず、このことが、有利なことに、これがイベントストリームを変更するためのデータイベントではなく、イベントストリームを終了するためのデータイベントであることを示す。
上で検討されたイベントストリームESのnの3つのケースのいずれかにおいて、HTTP送信プロトコル形式に基づいて、トランザクションがブロックチェーンに送られ、トランザクションに関連する結果が提供される。一部の実施形態において、要求に関連するイベント、すなわち、E0、En、またはENのどれかは、それぞれの要求に関連する単一のイベントまたは2つ以上のイベントである場合がある。たとえば、要求は、各E0、En、またはENに関する2つ以上のサブイベントのデータセットを含む場合がある。一部の実施形態において、結果は、トランザクションまたはそれぞれのトランザクションに関連するイベントのイベントデータ出力に基づく。一部の実施形態において、返される任意の結果またはイベントデータは、トランザクションの消費不可能なOP_RETURN出力内に保持されてよい。これは、ブロックチェーンに任意のデータを書き込み、また、トランザクションの出力を無効とマーキングするために使用され得るScriptオペコードである。別の他の例として、OP_RETURNは、トランザクション内にメタデータなどのデータを記憶し、それによって、ブロックチェーン上にメタデータを不変的に記録することができる、トランザクションの消費不可能な出力を作成するためのScript言語のオペコードである。メタデータは、ブロックチェーンに記憶されることが望まれるログまたはエントリまたはドキュメントを含む可能性がある。イベントデータまたは結果は、一部の実施形態において、それぞれのトランザクションの消費不可能な出力に含まれるペイロードであると考えられてよい。そのような出力は、その出力のロックスクリプトを終了させるオペコード、たとえば、上述のOP_RETURNによって、消費不可能にされてよい。しかし、その他の実施形態において、ペイロードまたはイベントデータは、その他の方法で含まれてよい。上述のように、結果は、スマートコントラクトSCの現在の状態のスナップショットに関連する。この結果は、プラットフォームプロセッサに関連するスマートコントラクトのためのインスタンス状態データベースまたは別のオフチェーンイベントログに記憶される、および/またはそこからアクセス可能である。
一部の実施形態において、イベントストリームESに関連する結果は、以下のうちの少なくとも1つを確認する証明書を含む。
- イベントEnがブロックチェーンに送られたトランザクション識別子
- ブロックチェーンのヘッダへのトランザクションのマークル包含証明(Merkle inclusion proof)
- 前記トランザクションが含められたブロックヘッダのコピー
トランザクションにおけるダスト出力の使用は、実行されているスマートコントラクトに関連するイベントストリームESに関してトランザクションが発生するときに、すべてのそれらのトランザクションの不変の連続的な記録を維持するために有利であり、重要である。これは、ブロックチェーンにトランザクションを記帳することによって、すべてのブロックチェーントランザクションがタイムスタンプを付けられ、ブロックチェーン内で順序通りであり続けるが、これが、それらのトランザクションの発生順の保存を保証しないからである。これは、トランザクションが異なる時間にブロックにマイニングされる可能性があるからである。したがって、チェーン内のブロックの順序だけが、ブロックチェーン内で時系列順に続き、個々のトランザクションは、そうではない。一方、スマートコントラクトである場合があるイベントストリームのイベントの正確な発生順を追跡し、記録し、監査するために、有利なことに、順番で次のトランザクションの第1の入力によって消費されなければならないダスト出力の使用が、トランザクションの順序が時系列的に追跡され、改ざん防止記録が作成されることを保証する。これは、ブロックにマイニングされると、順番で前のトランザクションから次のトランザクションへのダストの支払いが、ビットコインのプロトコル規則に合致して、(各トランザクションの最終的な出力である)埋め込まれたデータキャリア要素の順番が変更され得ず、イベントストリームが侵害されたことが直ちに明らかなることなく順番を変更する可能性がある挿入または削除が発生しない可能性があることを保証するからである。一部の実施形態においては、ビットコインプロトコルに固有の二重支払い(double spend)防止が、異なるアドレス間の暗号通貨(たとえば、ダスト)の移動と、ひいては、関連するイベントとが時系列順のままであることを保証する。したがって、これは、ブロックチェーン上のスマートコントラクトのセキュリティと、スマートコントラクトに固有のイベントストリームを使用する一連のイベント発生のログ、コピー、またはレプリケーションとを改善する。ダスト出力に関連する資金は、上述のようにプラットフォームプロセッサによって提供または管理されてよい。一部の実施形態において、プラットフォームプロセッサは、ダスト出力が実際にマイニングされるTxを作成することを保証するために、たとえば、運用フロート(operational float)からマイニング手数料を提供した。
一部の実施形態において、イベントストリームESに関連する要求のために使用される階層的決定性(hierarchical deterministic)キーチェーンKが決定される。そのようなキーチェーンは、所与のイベントストリームに対して一意である。そして、シードもしくは親、またはマスター鍵ペアKから、暗号化秘密鍵/公開鍵ペアが、K=Kn=0 to Nとなるように、関連する各イベントに関して導出されてよく、nは、0からNまでの整数であり、各整数nは、スマートコントラクトSCに関連する現在の状態またはイベントの現在の数を表し、Nは、nの最大値または最終値を表す。有利なことに、これは、特定のイベントストリームのために導出される鍵が、共通のマスター鍵またはシード鍵に関連し、それぞれのイベントを処理するために導出され得ることを保証する。このようにして、有利なことに、ダスト出力に関連するロックスクリプトが、現在のイベントのための導出された鍵Knによって守られ、第1の入力が、それぞれ、前の鍵ペアKn-1を使用して前のトランザクションからのダスト出力を消費する。これは、出力が、それぞれの前のトランザクションに固有の対応する鍵ペアを用いてのみ消費され得ることを保証する。
一部の実施形態において、第3の態様に関して上で検討されたように作成されたトランザクションの各々は、デジタル資産に関連するその他の入力をさらに含んでよい。これは、プラットフォームプロセッサによって操作される運用フロートに基づいて提供される場合がある。一部の実施形態において、これは、マイニング手数料の処理およびブロックチェーンのための1つまたは複数のその他の動作などをまかなうために決済プロセッサによって維持または制御されるデジタル資産または暗号通貨リソースまたは資金に関連付けられる場合がある。トランザクションは、デジタル資産に関連する1つまたは複数の変更出力も有する場合がある。上述のように、最終的なトランザクションは、すべての変更出力を有する。
一部の実施形態において、イベントストリームESは、送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいて特定されてよい。一部の実施形態において、イベントストリームESに関連する状態は、最も最近送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいて特定されてもよい。
一部の実施形態において、方法は、イベントストリームESの各イベントに関する結果に基づく記録のコピーまたはログをオフチェーンストレージリソースに記憶することを含む。このストレージリソースは、プラットフォームプロセッサに関連付けられるか、またはクライアントによって要求されるときにこのストレージリソースがそこから要求もしくは取得されてよい別のデバイス、データベース、もしくはサービス内にある場合がある。有利なことに、イベントストリームの結果に関連するログのストレージは、ブロックチェーン全体をダウンロードし、イベントストリームに関連するあらゆる問い合わせに関するデータを精査する必要性を回避するために別に記憶される。イベントストリームを実装するブロックチェーン自体は、監査またはデータ検証中の状況においてチェックされる可能性がある。そのとき、バックアップまたは別個のコピーは、上で説明されたように、イベントストリームの迅速な問い合わせおよび独立した検証のために使用される可能性がある。
第3の態様の一部の実施形態においては、複数のクライアントのうちの所与のクライアントの1つまたは複数のプロセッサによって実施される、スマートコントラクトにアクセスするためのコンピュータによって実施される方法であって、プラットフォームに関連付けられる1つまたは複数のプロセッサに関連するアプリケーションプログラミングインターフェース(API)エンドポイントを取得または特定するステップと、スマートコントラクトSCの実行に関連するサービスを要求するステップとを含む、方法が提供される。方法は、スマートコントラクトSCに関連する1つまたは複数のイベントEnの要求を送信することも含む。上述のように、要求は、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式を使用して送信される。
それから、方法は、スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび/または検証ツールを取得することを含む。方法は、要求されたイベントEnに関連するブロックチェーントランザクションの出力スクリプトに関連する結果を受信することも含み、前記結果は、HTTP送信プロトコル形式に基づいて受信される。一部の実施形態において、結果は、スマートコントラクトSCの更新された状態のインジケーションを含む。一部の実施形態において、方法は、1つまたは複数のソフトウェアライブラリを使用してスマートコントラクトSCに関連するスナップショットまたは状態を回復するステップをさらに含み、そのような回復は、イベントストリームESのイベントEnに関連する受信された結果に基づくかまたはそのような受信された結果を使用して実行されてよく、すなわち、イベントEnに関連するイベントストリームを再生することと同様であってよい。そして、1つまたは複数の検証ツールを使用して、方法は、スマートコントラクトの状態を独立して検証するために、回復されたスナップショットをイベントストリームESから取得された結果と比較することを含む。上述のように、比較/検証後に何らかの食い違いがある場合、すなわち、再生されたまたは回復されたイベントストリームおよび別のオフチェーンの結果または取得された結果に基づいて一致がない場合、エラーメッセージまたは通知が、クライアントおよび/またはプラットフォームプロセッサに送信されてよい。
一部の実施形態において、方法は、要求が、生データの代わりに、イベントEnに関するハッシュされたイベントデータを含むように、要求されているイベントEnに関連するイベントデータにハッシュ関数を適用することを含む。
本開示の態様は、プロセッサとメモリとを含むコンピューティングデバイスも含み、メモリは、プロセッサによる実行の結果として、上で検討されたコンピュータによって実施される方法をデバイスに実行させる実行可能命令を含み、コンピューティングデバイスは、プラットフォームプロセッサに関連する。
本開示の態様は、プロセッサとメモリとを含むコンピューティングデバイスも含み、メモリは、プロセッサによる実行の結果として、上で検討されたコンピュータによって実施される方法をデバイスに実行させる実行可能命令を含み、コンピューティングデバイスは、クライアントに関連する。
本開示の態様は、ワイヤレス通信ネットワークを介して少なくとも1つのクライアントに通信可能なように結合された少なくとも1つのプラットフォームプロセッサを含むコンピュータシステムも含み、少なくとも1つのプラットフォームプロセッサは、少なくとも1つのクライアントからのHTTP要求を処理するためのアプリケーションプログラミングインターフェース(API)エンドポイントに関連付けられ、少なくとも1つのプラットフォームプロセッサは、上述のコンピューティングデバイスに従って実装され、少なくとも1つのクライアントは、上述のクライアントコンピューティングデバイスに従って実装される。少なくとも1つのプラットフォームプロセッサは、ワイヤレス通信ネットワークを介して、プラットフォームサービスの以下の構成要素、すなわち、スマートコントラクトストア、イベントストリームログ、インスタンス状態データベース、およびデータライタのうちの1つまたは複数に通信可能なように結合される。
本開示の態様は、コンピュータのプロセッサによって実行された結果として、上述の態様および実施形態のいずれかの方法をコンピュータに実行させる実行可能命令が記憶されたコンピュータ可読ストレージ媒体をも含む。
一部の特定の実施形態が、同様の参照数字が同様の特徴を指す添付の図面を参照して実例として以降で説明される。
ブロックチェーンに関連する複数のサービスを提供するためのプラットフォームサービスの概要
複数のサービスを提供するための上述のプラットフォームプロセッサは、BSVブロックチェーンなどのブロックチェーンネットワークを使用して、ソフトウェアによって制御される技術的システムの管理またはスマートコントラクトなどの有用な実世界のビジネスおよび技術的アプリケーションの迅速な提供を有利に可能にするサービスとしてのプラットフォーム(PaaS)および/またはサービスとしてのソフトウェア(SaaS)の提供物(offering)であってよい。プラットフォームサービスの概要が、システムの高レベルの図解を示す図1に見られ得る。プラットフォームサービスは、API 108を提供するプラットフォームプロセッサ100を有し、API 108を介して、サービスは、1つまたは複数のクライアントによってアクセスされてよい。
この図に示されるプラットフォームサービス100は、3つの系統のサービスによって構成され、いかなるブロックチェーンに基づくソフトウェア、知識、またはライブラリもクライアントエンドに実際に実装することなく、ユーザおよび組織がブロックチェーンの特有の特性によって提供される利点を簡単で安全に利用することを可能にすることを目的としている。これらのサービスは、以下である。
- 商品データ台帳としてのチェーンの使用を簡素化することを目的とするデータサービス102
- ビットコインSVなどのデジタル資産によって裏打ちされた汎用的な計算フレームワークを提供することを目的とする計算サービス104
- ビットコインSVなどのデジタル資産を使用してトランザクションを行うための企業向けの能力を提供する商取引サービス106
本開示の態様および実施形態は、主に、図1aおよび図1bに関してさらに説明される計算サービス104に関する。
上述のように、APIがウェブサービスとして実装されるので、要求は、APIにおいてクライアントからHTTPSプロトコルによってまたはHTTPSプロトコルを使用して受信されてよい。それから、要求されたサービスが、基礎となるソフトウェア110を使用して、1つまたは複数のサービスモジュールまたは処理リソース102~106によって実施され、そのようなブロックチェーン/プラットフォームインターフェースソフトウェア110は、ブロックチェーンに関連付けられ、すなわち、ブロックチェーンに関連付けられるトランザクションを作成し、処理し、送るためのリソース、ライブラリ、および/または鍵管理ウォレットを実装しなければならない。処理されると、トランザクションは、(クライアントがいずれかのそのような機能またはトランザクションライブラリを実装する代わりに)ブロックチェーンネットワーク105に送られ得る。せいぜい、クライアントは、暗号通貨または何らかのその他のデジタル資産に関連するデジタルウォレットなどを実装してよいかまたは実装することが可能であるが、プラットフォームサービス100もクライアントのためにデジタル資産を提供し、管理することが可能であってよいので、これは必須ではない。
有利なことに、ブロックチェーンに基づくサービスの要求は、HTTP送信プロトコル形式でクライアントによって送受信され、したがって、クライアントは、いかなるトランザクション機能またはブロックチェーンライブラリも実装する必要なしに、ブロックチェーンに特有のすべての利点およびサービスを利用することができる。これは、サービスがHTTPまたはREST APIエンドポイントであってよいプラットフォームAPIを介して提供されるからである。たとえば、REST APIの設計規格は、インターネット上で下表に示される以下のHTTPコマンドを使用してHTTP要求および通信を処理することができ、これは、クライアントによって必要とされる、すなわち、インターネット上でメッセージを送受信することが可能であるためのすべての機能である。プラットフォームプロセッサは、遠隔でまたはクライアントのために別にコマンドを実施する。
Figure 2023513848000002
クライアントからの受信された要求は、上述のように、所与のクライアントに固有のクライアント識別子と、プラットフォームによって提供される複数のサービスのうちの要求された所与のサービスのサービス識別子とを含むかまたはそれらに関連付けられるHTTP GETまたはHTTP POSTまたはHTTP PUTまたはHTTP PATCH要求であってよい。場合によっては、クライアントに送信される結果は、クライアント識別子に基づくHTTP POST要求である。
一部の例においては、ブロックチェーンに基づく計算およびトランザクションのためのアドレス指定をより簡単にするために、1つまたは複数のエンティティの複雑な公開アドレスの代わりに、憶えやすく、よりユーザフレンドリーなエイリアスが使用されるメカニズムが既に存在する。そのようなソリューションが、両方ともnChain Holdings Limitedの名義で、米国特許出願第16/384696号および英国特許出願第1907180.2号に提案されている。これらの出願は、クライアントエンティティまたはさらに言えばプラットフォーム100などのサービスエンティティの公開アドレスの代わりに送り先アドレス指定のためにエイリアスが使用される、「bsvalias決済サービス」と呼ばれる、エイリアスに基づく決済サービスおよび関連プロトコルを記載する。そのようなシステムにおけるエイリアスは、通常、送信/受信エンティティのドメイン名に関連付けられ、URIや電子メールアドレスである場合がある。したがって、送信者またはエンティティがエイリアスを認識しているかまたは提供される限り、これは、bsvalias支払いシステムまたはエイリアスに基づくアドレス指定メカニズムに十分である。メッセージは、たとえば、bsvaliasまたはその他の決済サービスに関するよく知られたURIまたはロケーションに保存されたJavaScriptオブジェクト表記法(JSON)ドキュメントなどの機械可読リソースにおいて提供される命令を使用してクライアントのエイリアスに送信される場合がある。本開示の一部の実施形態においては、複数のクライアントのうちの1つまたは複数が、それぞれのクライアントを特定するための上記のようなエイリアスを有していてよい。同様に、プラットフォーム100のAPIも、アドレス指定のためのエイリアスなどに関連付けられてよい。
また、クライアント識別子およびクライアント識別子に対応する記録に基づいてクライアントを有効化することも可能である場合があり、記録は、プラットフォームプロセッサに関連付けられる。たとえば、そのような記録は、クライアントのサインアップまたは登録時にプラットフォームプロセッサにおいて作成され、記憶されたか、またはプラットフォームプロセッサに関連付けられた可能性がある。そして、クライアントの成功裏の有効化に基づいて、方法は、サービス識別子と、それぞれの記録に含まれる属性または設定とに基づいて、クライアントからの受信された要求が有効であるかどうかを判定することを含む。場合によっては、前記属性または設定は、所与のクライアントが要求されたサービスのすべてまたは一部にアクセスすることを許可されるか否かを示す場合がある。たとえば、クライアント識別子に関連する1つまたは複数のレベルのパーミッションが、属性または設定において提供される場合がある。たとえば、所与のクライアントが、特定のイベントに関してブロックチェーン上にあるデータを読み取るサービスを要求することを許可される可能性があるが、そのようなイベントを修正、削除、または終了することは許可されない可能性があり、一方、別のクライアントは、1つまたは複数のサービスに関連するすべてのアクションに関するパーミッションを有する可能性がある。
一部の例において、所与のクライアントのアイデンティティを検証するステップは、クライアントに関連するデジタル署名に基づいてよい。各クライアントに関連する秘密鍵および公開鍵(または公開アドレス)を含む暗号鍵ペアが、サービスに関して行われた要求が本当に所与のクライアントから生じたということを検証するために使用されてよく、つまり、秘密鍵によって署名されたデータは、対応する公開鍵を使用してのみ回復または有効化され得る。検証がデジタル署名に基づく場合、標準的な公開鍵基盤(PKI)技術が使用され、実装されてよい。
第1の態様: スマートコントラクトを実行するためのブロックチェーンに関連する計算サービスを提供するプラットフォーム
図1aは、図1のプラットフォーム100によって提供される計算サービス104の構成要素の一部を、図2以降で説明される本開示の態様および実施形態を実行するためにそれとインタラクションする構成要素の図示とともにより詳細に示す。図1aに示された構成要素が、以下で説明される。
データサービス1004は、ビットコインSVブロックチェーン1005を介してデータを書き込む、すなわち、公証または公表するためのHTTP APIであってよいデータライタを含む。本開示がそのようなブロックチェーンの使用のみに限定されないことは、理解されるであろう。データサービス1004に関連するクライアント側のツールは、図1aの顧客アプリケーション1001内で提供されてよい。これは、クライアントエンティティ/デバイスに提供されるソフトウェアアプリケーションの形態であってよい。顧客アプリケーション1001は、認定されたデータを検証するために使用されてよく、ブロックチェーンに含められてからデータが改ざんされていないことを任意の関係者が検証することを可能にする。これらのツールは、プラットフォームサービス100を介して提供されてよく、または文書化された仕様に基づき独立して実装されてよい。
(図1の)計算サービス104は、エグゼキュータプラットフォーム1000を含むように示されている。エグゼキュータプラットフォーム1000は、一部の実施形態においては、計算サービスを実施するための本開示におけるプラットフォームプロセッサと呼ばれる。コントラクトストア1003も提供される。これは、顧客が予め構築されたスマートコントラクトソフトウェアのカタログから閲覧することを可能にするためのウェブギャラリーを含む場合がある。エグゼキュータプラットフォーム1000は、スマートコントラクトのデプロイおよび実行のためのサービスとしてのプラットフォーム能力を顧客に提供する。コントラクトストアは、予め構築されたおよびプラットフォームによって構成されたスマートコントラクトの集合である。複数の顧客が同じ(または非常に類似した)スマートコントラクトのニーズを示す場合、プラットフォームサービス100は、そのようなコントラクトの実装を、即時の、開発なしの(zero- development)デプロイのために提供することができる。コントラクトストア1003は、顧客の管理者に、ウェブとAPIとの両方の構成およびパラメータ化(parametrisation)機能とともに、取りそろえられたそのようなターンキー契約(turn-key contract)へのアクセスを認める。
計算サービス104に関して、クライアントまたは顧客アプリケーション1001は、顧客の開発者がスマートコントラクトプラットフォームをデプロイするかまたは起動する前にローカルでそれらのコントラクトを構築し、テストすることを可能にするために、スマートコントラクトのためのドキュメント、ライブラリ、例、およびローカルランタイムを備えたソフトウェア開発キット(SDK)も含む。スマートコントラクトのコードと基礎となるイベントストリームデータとの両方が与えられた場合に、スマートコントラクトインスタンスの実行の正しさを検証するためのオフプラットフォームツール(off-platform tooling)である場合がある検証ツールも、含まれる。
エグゼキュータプラットフォーム1000は、図1aに見られるクライアントアプリケーション1001およびデータサービス1004とインタラクションする、図1bに見られる以下の構成要素を含んでよい。一部の実施形態において、下の図2から図5に示された方法および図8に示された例示的なシナリオは、エグゼキュータプラットフォーム1000によって実行または遂行されてよい。
イベントゲートウェイ1000aおよび1000b: これらのゲートウェイは、クライアントから受信された入力データなどのイベントをコントラクトにフィードするJSON-over-HTTPまたはbsvaliasエンドポイントであってよい。一部の実施形態において、それらのイベントゲートウェイは、外部入力からのブリッジと、認証および認可のための既存のまたは組み込まれたソリューションとを提供する。イベントゲートウェイ1000aおよび1000bは、クライアントエンティティなどのその他のエンティティにアクセスまたは提供され得るエンドポイントを提供するためのHTTP APIの機能を実施するように構成されてよい。イベントゲートウェイは、エグゼキュータプラットフォーム1000のためのゲートウェイサービスとして実装されてよい。
図1bに示されるコントラクト管理API 1006は、顧客またはクライアントがスマートコントラクトプログラムをアップロードし、それらの実行環境を構成することを可能にする。この構成要素は、(認証および認可を含む)アクティブな上述のゲートウェイ、イベントストリームの特性(公証するもしくは公開する)、ならびに図1aにおいて検討されたコントラクトストア1003に記憶されてよく、および/または下で検討されるコントラクトリポジトリ1007に関連付けられてよいスマートコントラクトソフトウェアをアップグレードするための方法に関連付けられるか、またはそれらによってもしくはそれらを介して提供されてよい。一部の実施形態において、この構成要素は、スマートコントラクトまたはそれに関連するイベントストリームに関連するデータを処理するために、クライアントエンティティに送信される任意のライブラリまたはソフトウェアツールおよび機能を提供する責任を負う場合がある。
コントラクトリポジトリ1007: この構成要素は、スマートコントラクトの実装のためのストレージおよび管理APIを提供するように構成されてよい。この構成要素は、スマートコントラクトのコードを実行するために、エグゼキュータプラットフォーム100がクライアントから受信された所与の入力に関する適切なハンドルまたはスマートコントラクト識別子を見つけ、回復するために、コントラクトの実行ファイルを記憶するように構成されてよい。一部の実施形態において、これは、コントラクトストア1003自体として、もしくはコントラクトストア1003の中に実装される場合があり、またはコントラクトストア1003に記憶されたスマートコントラクトのためのソフトウェアを呼び出すために別れて実装される場合がある。
エグゼキュータ1008: 図1のプラットフォーム100の計算サービス104のためのプラットフォームプロセッサおよび図1aのエグゼキュータプラットフォーム1000の処理または計算構成要素である。エグゼキュータ1008は、ゲートウェイ1000aおよび/または1000bを介してクライアント入力を受信すると、スマートコントラクトのためのサーバレス実行プラットフォームを提供するように構成される。したがって、エグゼキュータ1008は、クライアントによって特定された適切なコントラクトを呼び出すことによって、ゲートウェイを通じて受信されたイベントに反応するように構成されてよい。エグゼキュータは、ブロックチェーン内のコントラクトに関連するイベントストリームに関連する処理を呼び出すようにさらに構成される。たとえば、これは、スマートコントラクトの状態の永続性を管理すること、および/または下流のイベントストリームAPIに接続することを含む場合がある。エグゼキュータは、スマートコントラクトの現在の状態を判定するために、リポジトリからスマートコントラクトを回復し、および/または状態データベースからインスタンスの状態を取り出すようにさらに構成される。エグゼキュータは、入力イベントをイベントストリームに記録し、スマートコントラクトが入力イベントデータを処理するようにスマートコントラクトを実行するようにさらに構成されてよく、入力イベントデータは、ブロックチェーン上のイベントストリームにおいて公証される。エグゼキュータは、スマートコントラクトの状態をオフチェーンストレージのために、インスタンス状態データベース(下記参照)に戻って永続化される(persisted)スマートコントラクトの更新されたスナップショットの状態をさらに提供する。
インスタンス状態データベース1009: この構成要素は、クライアントからのイベントの処理を完了した後にコントラクトの状態を反映するストレージチェックポイントまたはデータベースである。この構成要素は、所与のスマートコントラクトプログラムの呼び出しの間のエグゼキュータ1008による処理に続いてコントラクトのスナップショットの状態(すべての入力にコントラクトの規則を適用することから導出された状態)を記憶するように構成されてよい。
スマートコントラクトの実装 - 概要
知られているように、コントラクトは、合意の関係者の権利および義務を認め、律する法的拘束力のある合意である。合意は、概して、商品、サービス、金銭、またはそれらのいずれかの約束の交換を伴う。スマートコントラクトは、コントラクトの交渉または実行をデジタルで促進するか、検証するか、または施行するように意図されたコンピュータプロトコルである。たとえば、イーサリアムは、スマートコントラクトと考えられる可能性があるものを実行することができる人気のあるプラットフォームである。ビットコインスクリプト自体、トランザクションを行うエンティティ間で1組の規則を施行するソフトウェアであり、まず間違いなくビットコインをスマートコントラクトのプラットフォームにするので、スマートコントラクトと考えられてよい。R3のコルダは、様々なその他のブロックチェーンに似たプラットフォームとともに、スマートコントラクトのプラットフォームと考えられてよい。
スマートコントラクトは、大きくは以下のようにカテゴリ分けされ得る。
オンチェーンコントラクト: ビットコインスクリプトなどのオンチェーンスマートコントラクトは、コントラクトの規則をコントラクトインスタンスのパラメータとともにパッケージ化する。実行監査証跡は、オンチェーンで公開され、(基礎となるブロックチェーンがそのような保証を提供すると仮定して)永続的であり、不変である。オンチェーンコントラクトの例は、アトミックスワップ、r-puzzle、アキュムレータツリー(accumulator tree)、およびペイメントチャネルを含む。いずれの場合も、支援するオフチェーンインフラストラクチャが依然として必要とされるが、コントラクトの核はビットコインスクリプトによって表現され、トランザクションの有効化の一部としてマイナーによって実行される。
オフチェーンコントラクト: オフチェーンスマートコントラクトは、通常のコンピュータソフトウェアとして存在する。オフチェーンスマートコントラクトは、すべての契約関係者に受け入れられ得るエンティティによって運用される。ブロックチェーンを使用しないオフチェーンコントラクトは、本開示においてさらに考察されない。
ハイブリッドコントラクト: ハイブリッドコントラクトは、オンチェーンの手法とオフチェーンの手法との混合を表す。ハイブリッドスマートコントラクトは、ブロックチェーンを活用することによってオフチェーンコントラクトの能力を強化する。概して、これらの追加の能力は、データの完全性の証明可能性およびセキュリティを含む。いくつかの初期のハイブリッドスマートコントラクトプラットフォームが、開発中であるかまたは既にローンチされているかのどちらかである。例としては、TokenizedおよびGearSVを含む。
ブロックチェーンの上にスマートコントラクトプラットフォームを構築することには利点があり、基礎となるブロックチェーンが、その他の方法では実現することが難しいかまたは不可能である特定の保証を提供する。本開示の目的のために、用語「ブロックチェーン」は、パブリックなプルーフオブワークブロックチェーン、特に、ビットコインSVを説明するために使用される場合がある。しかし、本開示の態様および実施形態がこれに限定にされないことは、理解されるであろう。
どのような形態のスマートコントラクトも、自動化によって価値を提供する。正しく実装されたスマートコントラクトは、自律的に、そのスマートコントラクトにプログラミングされた規則に従って作動する。大量のコントラクトインスタンスが、自動化されていない代替的なプロセスよりも低い誤り率で、通常の安価なハードウェアで自動的に処理される可能性があるので、自動化によって実現可能な価値がある。スマートコントラクトプラットフォームをブロックチェーンに結びつけることによって、ブロックチェーンの本質的な特性が、そのプラットフォーム上で実行されるすべてのスマートコントラクトによって継承される可能性がある。これらの利点は、主に、チェーンの不変的な性質、単一の記録管理エンティティが存在しないこと、およびBSVなどのブロックチェーンの基礎となるセキュリティ基本要素(security primitive)によって導き出される。
データは、ブロックチェーンに基づく商品台帳にコミットされてよい。コミットメントを構築する際は、データと関連するメタデータとの両方がキャプチャされる。ブロックチェーンが一種の証人またはタイムスタンプの権威者として働くので、このメタデータは、常にタイムスタンプを含む。メタデータは、電子署名および関連する公開鍵の形態でアイデンティティ情報をさらに含んでよく、その公開鍵は、既存の法的先例(legal precedence)によってアイデンティティ情報の代理として認められる場合がある。これは、公開鍵が何らかの信頼できる第三者または認証局によって証明されたか、またはサービスプロバイダが認証されたクライアントに代わって署名を適用したシナリオを含む場合がある。
ブロックチェーンに基づく商品台帳にコミットされると、データは、そのコミットメント以降変わっていないことが証明され得る。これは、記録の改ざんが行われていないことを示すために使用される場合がある。単一の記録管理権威に依存しないことによって、記録を変更するか、証人としてのブロックチェーンの起源(provenance)に疑いを投げかけるためにいかなるそのような権威を掌握することも不可能である。スマートコントラクトをブロックチェーンに関連して実装することは、少なくとも、自動化によるコストおよびエラーの削減と、改ざんがすぐに分かる記録管理による強化された監査および説明責任と、ビットコインの基礎となるセキュリティ基本要素を活用する能力との組合せに鑑みて有利である。
有限状態機械(FSM)は、計算の数学的モデルである。FSMは、いついかなるときでも有限個の状態のうちのちょうど1つであることが可能な抽象的な機械である。FSMは、いくつかの入力に応じてある状態から別の状態に変化することができ、ある状態から別の状態への変化は、遷移と呼ばれる。FSMは、その状態、その初期状態、および各遷移をトリガする入力のリストによって定義される。ステートマシンレプリケーション(state machine replication)は、複製されたプロセスが決定性有限オートマトン(DFA)であり、あらゆるイベントのアトミックブロードキャスト(atomic broadcast)が可能であると仮定する。ステートマシンレプリケーションは、分散型コンセンサスに基づき、トランザクションレプリケーション(transactional replication)モデルと多くの共通点がある。DFAは、絶対に、一度にちょうど1つの状態であるソフトウェアのモデルである。FSMが状態の間を遷移することができる唯一の方法は、外部イベントに応じる。レプリケーションは、FSMが決定性であり、イベントの入力ストリームがマシン間で忠実に複製される場合、それらのイベントを処理する各マシンが最終的にまったく同じ状態になることを実現することによってこの特性を土台とする。
本開示の態様および実施形態において、スマートコントラクトは、FSMおよびより詳細にはDFA、すなわち、所与の時間にちょうど1つの状態にあるソフトウェアモデルとして実装される。
本開示によるスマートコントラクトの実行
図2は、ブロックチェーンに関連するスマートコントラクトの実行を可能にするための、本開示の第1の態様による方法に関する。図2の方法は、サービスのためのアプリケーションプログラミングインターフェース(API)に関連するプラットフォームプロセッサによって実施される。プラットフォームプロセッサは、図1aに見られるエグゼキュータプラットフォーム1000、または図1に見られるプラットフォームサービス100の計算サービス104を実施するためのエグゼキュータプラットフォーム1000内のエグゼキュータ1008であってよい。
ステップ202は、クライアントからの要求を受信することを示し、要求は、スマートコントラクト(SC)に関連する。要求は、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式であり、図1bにおいて上で述べられたようにAPIまたはbsvaliasゲートウェイを介して提供される。
ステップ204は、要求に関連するスマートコントラクトSCにアクセスすることを示す。まず、実行されるべきスマートコントラクトが、要求から特定される。たとえば、これは、要求内の識別子またはキーワードに基づいてよい。方法は、要求に関連するスマートコントラクトSCソフトウェアにアクセスすることを含む。スマートコントラクトは、エグゼキュータ1000プラットフォーム内に設けられる、それぞれ図1aおよび図1bに見られるコントラクトストア1003もしくはリポジトリ1007などのストレージモジュールからアクセスされてよく、または前記ストレージモジュールは、プラットフォームプロセッサによってアクセスされ得るロケーションに遠隔で置かれるかもしくはそのようなロケーションからホストされてよい。
ステップ206は、ブロックチェーンに関連するイベントストリーム(ES)を特定することを示し、イベントストリームESは、スマートコントラクトSCに固有であり、スマートコントラクトSCの状態を表す。要求のスマートコントラクトSCに関連するイベントストリームESは、ブロックチェーンから直接取得されてよく、またはこれは、インスタンススナップショットデータベース1009などの、コントラクトの現在のスナップショットを提供するための、ブロックチェーン上のイベントストリームESを複製するオフチェーンログもしくはデータベースから取得されてよい。イベントストリームESは、ステップ202において要求内で特定されたスマートコントラクトSCに関連するトランザクション識別子に基づいて特定されてよい。
イベントストリームESは、ブロックチェーン上の機械可読コントラクトまたはスマートコントラクトを表し、スマートコントラクトSCの状態を追跡するために、上述のように有限状態機械(FSM)に基づいて実装される。
ステップ208は、スマートコントラクトSCの現在の状態ESnを判定する。これは、それに関連するイベントストリームESに基づいて判定される。スマートコントラクトSCの現在の状態は、ESnとして示され、nは、0からNまでの整数であり、各整数nは、スマートコントラクトSCに関連する現在の状態またはイベントの現在の数を表し、Nは、nの最大のまたは最終的な値または状態を表す。一部の実施形態において、現在の状態の判定は、スマートコントラクトSCの状態を表すイベントストリームに関連する直近の結果に基づく現在の状態のインジケーションまたは記録に基づいてよい。これは、ブロックチェーン上のイベントストリームESに関連するトランザクションから直接判定されてよく、またはスマートコントラクトSCに固有のイベントストリームESに関連するデータに関するイベントログなどの、イベントストリームESのための1つもしくは複数の別個のオフチェーンストレージリソース内で判定されてよい。
ステップ210は、受信された要求に基づいてスマートコントラクトSCの実行を呼び出すことを示す。一部の実施形態において、スマートコントラクトSCに関するイベントストリームESが特定されるかまたは作成されると、スマートコントラクトSCのソフトウェアコードの実行が、自動的にトリガされる。イベントストリームESを作成またはアップロードするプロセスは、図3から図5により詳細に見られる。一部の実施形態において、クライアントの要求に従った実行は、プラットフォームプロセッサに関連する1つまたは複数のプロセッサによって実行されてよい。その他の実施形態において、スマートコントラクトのコードの実行は、サーバレス実行技術に基づく場合がある。
サーバレスコンピューティングは、クラウドプロバイダがサーバを実行し、マシンリソースの割り当てを動的に管理するクラウドコンピューティング実行モデルである。サーバレスコンピューティングは、コードを本番環境にデプロイするプロセスを簡素化することができる。スケーリング、キャパシティプランニング、およびメンテナンスオペレーションは、開発者またはオペレータから隠される場合がある。AWS Lambda、Azure Functions、およびCloudflare Workersなどの人気のサーバレスプラットフォームは、開発者またはオペレータが基礎となる計算環境(仮想マシン、オペレーティングシステムの構成など)を気にかけなくてよいランタイム環境だけでなく、ホストインフラストラクチャ上ですぐに実行することができる(ready-to-run)サーバレスソフトウェアを生成するためのSDKも提供する。
既存のサーバレス実行プロバイダは、実行ファイルへの既製のエントリポイントとともに、それらのランタイムに関する豊富な構成を提供する。よくあるエントリポイントは、エンドポイント、メッセージキュー、およびファイルストレージを含む。これらのエントリポイントまたはゲートウェイは、論理プロセッサ(ソフトウェア)に入力をフィードするスマートコントラクトモデルに適合する。エントリポイントゲートウェイおよびコモディティランタイム環境(commodity runtime environment)のこのモデルを採用する際、プラットフォームは、すべてのソースからのすべての入力をイベントストリームに(たとえば、データサービス1004を介して)記録する場合がある。認証および認可の特徴を有するゲートウェイは、入力のゲート制御(gating)または認可をさらに提供する。最後に、新しいスマートコントラクトのインスタンスを作成する際、いかなるイベントが書き込まれるよりも前にイベントストリームにコントラクトソフトウェアの識別子またはハッシュをキャプチャすることは、イベントストリームのすべてのレプリカが、それらのレプリカがスマートコントラクトに関連する正しいFSMを実行していることを確信することをさらに可能にする。
ステップ212は、スマートコントラクトSCに関連するイベントストリームESの処理または更新を呼び出すことを示す。一部の実施形態において、スマートコントラクトに関連するイベントストリームESの処理または更新を呼び出すステップは、プラットフォームプロセッサによって、つまり、エグゼキュータプラットフォーム1001自体の中で実行される。その他の実施形態において、イベントストリームESの処理または更新を呼び出すステップは、ブロックチェーンに関連するイベントストリームESにデータを書き込むことによって新しいイベントEnを処理するために、上述のようにプラットフォームプロセッサに関連するデータライタ(図1aのデータサービス1004参照)にアクセスするステップをさらに含む。
一部の実施形態において、イベントストリームは、ステートマシンに関連し、決定性有限オートマトン(DFA)などのブロックチェーン内の有限状態機械として実装される機械可読コントラクトまたはスマートコントラクトを表す。FSMは、その状態、その初期状態、および各遷移の条件のリストによって定義される可能性がある。ビットコインSVブロックチェーンにおいて、UTXOセットは、ステートマシンと考えられることが可能であり、所与の出力の消費された状態は、トランザクション(マシン)への以前の入力の関数である。したがって、すべてのトランザクションを再生することによって、任意の出力の現在の消費状態、およびUTXOセットの現在の内容が、ブロックチェーンを使用して決定的に立証され得る。したがって、図2の実施形態において、要求は、スマートコントラクトSCの現在の状態を変更する要求と考えられ得る。
ステップ214は、受信された要求に基づいて新しいイベントEnを処理することを示す。この処理は、要求が新しいコントラクトもしくは既存のコントラクトを呼び出すかもしくは更新するためのものであるのか、またはクライアントに関連付けられる既存のコントラクトを終了するためのものであるのかに応じて、図3から図5においてより詳細に説明される。
ステップ216は、新しいイベントEnの処理に続いてまたは基づいて、スマートコントラクトESnの更新された現在の状態を取得することを示す。更新された状態を示すまたは更新された状態に基づく結果は、プラットフォームプロセッサに関連するオフチェーンイベントログに記憶されてよい。一部の実施形態において、スマートコントラクトに関する更新された現在の状態ESn+1に基づいて結果は、クライアントに送信される。この結果は、対応するブロックチェーントランザクションの出力スクリプトに関連付けられてよい。場合によっては、結果は、回復されたバージョンがイベントストリームの記憶されたまたは信頼できるバージョンと照合され得るようにイベントストリームのスナップショットが再現または回復されることを可能にする機能を含む。
一部の実施形態においては、ソフトウェアライブラリおよび検証ツールを備えたSDKが、クライアントが結果を独立して処理し、検証することを可能にするためにクライアントに提供されてもよい。これらのツールは、イベントストリームESを回復し、再生することができる。そのとき、スマートコントラクトSCの状態は、プラットフォーム内に、たとえば、インスタンススナップショットデータベースに保持された現在のスナップショットの状態と照合される場合がある。イベントストリームの再生からのスナップショットの状態がオフチェーンで記憶された状態または取得された結果と一致する場合、動作および実行がスマートコントラクトの論理通りに正しく行われたことが検証され得る。
有利なことに、図2に示された本開示においては、スマートコントラクトが、イベントストリーム(ES)のすべての入力イベントのレプリケーションを用いるDFAとしてモデル化されており、スマートコントラクトのすべての関係者は、特定の事前に定義された要件が満たされていれば、コントラクトのその他の関係者のいずれも信頼することなく、コントラクトソフトウェアの動作、すなわち、それが規則セットに従って論理を正確に実行したこと、および改ざんが行われていないことを検証することができる可能性がある。
イベントストリーム外のデータソースまたはイベントに依存するコントラクトなどの非決定性のコントラクトは、同じ入力が与えられた場合に同じ状態を生成しない可能性がある。非決定性のよくある原因は、時間関数および(擬似)乱数発生器を含む。非決定性のこれらの原因は、それらが決定性になるように容易に対処することができる。時間は、外部から調達され、任意のその他の入力データと同様にコントラクトに入力データとしてフィードされる場合がある。このようにして、時間は、イベントストリームESによってキャプチャされ、複製される場合がある。
(擬似)乱数は、多くの異なる技術を使用して構築される場合がある。多くの場合、これらの技術は、最初に利用可能なエントロピーから乱数発生器にシードを与えることから始まり、そして、この時点以降の乱数は、決定性のパターンに従う。より高度な技術は、複製されたログの所持者が順番に生成される次の乱数を推測することを防止するが、正しい動作の事後の検証をなおも可能にする。非決定性のその他の原因は、同様にして対処される可能性がある。スマートコントラクトが外部データ、たとえば、資産、商品、証券(instrument)、または同様の対象の現在の価格の知識などを必要とする場合、価格が入力としてフィードされてよい。
有利なことに、図2に示された本開示においては、コントラクトの動作の正しさを検証するために、すべての入力が、イベントストリームにキャプチャされ、関係者に複製される。コントラクトの決定性の挙動に続いて、コントラクトのすべての(認可された)関係者が独立して動作の正しさを検証するように入力が複製されなければならないことは明らかである。
有利なことに、図2に示された本開示において、入力は、ゲート制御されるかまたは保護される場合がある。コントラクトの出力が入力のストリームの関数である場合、それらの入力は、認可された関係者、すなわち、スマートコントラクトにアクセスすることができる有効なクライアントのみが入力を提供してよいようにゲート制御されなければならないということになる。入力イベントを生成するアクションの認可を施行することができないスマートコントラクトは、ソフトウェアによれば有効であるが、合意の条件によれば無効な出力状態を生成する可能性がある。
有利なことに、図2に示された本開示においては、イベントログが、改ざんの可能性がまったくなく、すべてのレプリカに忠実に転送される。レプリケーションターゲット間でログが修正、改ざん、変異、省略、またはそれ以外の方法で改変(malleate)される場合、各ターゲットは、コントラクトの現在の状態の異なる見解に達する可能性がある。スマートコントラクトの連続した実行状態を追跡するためのイベントストリームの使用は、改ざんのいかなる可能性も防止する。
有利なことに、図2に示された本開示において、イベントストリームのレプリケーションターゲットは、スマートコントラクトの同じFSMまたはインスタンスを実行する。そうはなく、ログが正しく複製されたが、ログのエントリを処理するソフトウェアがレプリケーションターゲット間で異なる場合、各ターゲットは、コントラクトの現在の状態の異なる見解にやはり達する可能性がある。独立して検証され得るスマートコントラクトの現在のスナップショットのためのイベントストリームの使用は、誤ったレプリケーションを防止する。
一部の既存のブロックチェーンに基づくスマートコントラクトプラットフォームは、ネットワーク内の多種多様なノードにスマートコントラクトソフトウェアを複製しようと試みる。ネットワーク内の各ノードは、あらゆるコントラクトへのあらゆる入力を処理する。しかし、これは、プラットフォームの拡張性を、ネットワーク内の最も貧弱なノードの上限のスループットに制限する。ブロックチェーンにおけるスマートコントラクトの実行を追跡するための、図2において上で説明されたイベントストリームの使用は、スマートコントラクトのスナップショットのオフチェーンストレージを可能にし、記憶された現在のスナップショットとその後比較され得る、検証する関係者によるイベントストリームの再現を可能にすることによって独立した検証を可能にする。
したがって、図2に示された本開示のメカニズムは、スマートコントラクトの実行のための以下の能力および利点を提供する。
- すべての入力が、イベントストリームに記録される。
- オフチェーンの安全な入力イベントストレージが、イベントストリームがすべての入力を、それらをオンチェーンで明かすことなく公証することを可能にする。
- スマートコントラクトソフトウェア自体が、入力とみなされてよく、いかなるデータが処理されるよりも前にイベントストリームに公証される。
- コントラクトが、サーバレス実行プラットフォームによって実行される。
- コントラクトが、ゲートウェイ(HTTP APIおよびBSVエイリアス)を通じて受信されるイベントに応答する。コントラクト実行環境は、(限られた)状態管理を提供し、コントラクトインスタンスのスナップショットの状態がイベント実行の間に永続化されることを可能にする。エグゼキュータは、以前のスナップショットの状態を回復し、これをイベント入力とともに提供し、スマートコントラクトの実行後に更新されたスナップショットの状態を永続化することができる。
- 非決定性の挙動のよくある原因(時間および乱数)を扱うためのメカニズムが、プラットフォームプロセッサによって提供される。
- SDKが、クライアント側に提供するために利用可能であり、SDKは、以下を含む場合がある。
〇 入/出状態スナップショット(entry/exit state snapshot)の受信および生成、ならびに入力の解析を制御する、スマートコントラクトを構築するためのライブラリ
〇 開発者の機器においてコントラクトを試験するための開発モードランタイム
〇 クイックスタート、ウォークスルー、API参照資料、開発ランタイムのオペレータ使用説明を含む豊富なドキュメント
〇 プラットフォームからイベントストリームおよびコントラクトインスタンスを回復し、イベントストリームを再生して、コントラクトの所定の状態を検証することができる検証ツール
図3、図4、および図5は、ブロックチェーン上のスマートコントラクトの現在の状態までのスマートコントラクトの不変の逐次ログまたは記録を確立するために、図2において検討されたスマートコントラクトSCを表すイベントストリームESを実装するための方法を検討する。一部の実施形態において、ブロックチェーン上に保存されることに加えて、ログが、オフチェーンでも提供または記憶され得る。イベントストリームESがトランザクションに関連する入力および出力に基づくので、説明される技術は、ブロックチェーン上のスマートコントラクトSCを表すイベントストリームESに関連するすべてのトランザクションの不変の時系列的ログを確立するための方法を示す。イベントストリームESは、FSM、DFAなどを使用してスマートコントラクトを表してよい。
図3から図5は、アプリケーションプログラミングインターフェース(API)に関連するプラットフォームプロセッサによって実施されてよい。一部の実施形態において、図3~図5のステップは、図1に見られ、図1bにおいてより詳細に説明された計算サービスモジュール104に関連付けられるエグゼキュータ構成要素によって実行されてよい。その他の実施形態において、図3~図5のステップは、図1に見られ、図1bにおいてより詳細に説明されたデータサービスモジュール102に関連するデータライタによって実行されてよい。この場合、データライタは、プラットフォームプロセッサのエグゼキュータによってトリガされるかまたは呼び出される。
図3は、新しいイベントストリームを作成することに関する。
ステップ302は、クライアントからの要求を受信することを示し、要求は、所与のクライアントのための新しいスマートコントラクトに関連する。図3は、SCのためのブロックチェーンを使用して新しいイベントストリームESを作成することに関する。クライアントからの要求は、上述のように、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式である。
ステップ304において、要求がクライアントに関連する新しいスマートコントラクトを求めるものであるので、新しいイベントストリームESが、このスマートコントラクトSCのために初期化または作成されることになる。このステップは、ここでスマートコントラクトに関連付けられるべきである要求内の新しいイベントを特定することに関連する。
ステップ306は、ステップ302の受信された要求内のイベントデータに基づいて、スマートコントラクトSCのためにブロックチェーンに新しいイベントストリームESが作成されるための、第1のイベントE0に関連するデータを取得することを示す。
ステップ308は、n=0である新しいイベントストリームESのための第1のブロックチェーントランザクションTX0を作成することを示す。一部の実施形態においては、第1のトランザクションの作成の前に、このステップは、作成される新しいイベントストリームESで使用される階層的決定性(HD)キーチェーンKを決定することも含んでよい。一部の実施形態において、これは、知られているBIP 21プロトコルに基づいて、シードまたは親またはマスター鍵から始まる鍵の階層ツリー状の構造を生成するために、プラットフォームプロセッサに関連するHDウォレットの実装によって実装されてよい。HD鍵作成および転送プロトコルは、鍵の生成を大幅に簡素化し、独立して動作し得る子アカウントの作成を許し、各親アカウントに、たとえ子アカウントが侵害されるとしても、その子アカウントを監視または制御する能力を与える。HDプロトコルは、単一のルートシードを使用して、別々の決定的に生成された整数値によって子鍵、孫鍵、およびその他の子孫の鍵の階層を作成する。また、各子鍵は、チェーンコードと呼ばれる決定的に生成されたシードをその親から取得する。こうすることで、1つのチェーンコードのいかなる侵害も、必ずしも階層全体の整数シーケンスを侵害するとは限らない。上記の利点に加えて、本態様においては、この鍵の生成が、プラットフォームプロセッサによって実行され、したがって、この生成のリソースおよび機能をクライアントからなくす。したがって、HDウォレットが、クライアントによって実装される必要はない。ステップ308において、キーチェーンKは、
K=Kn=0 to N
となるように、選択された親鍵ペアから導出された一連の秘密鍵/公開鍵ペアを含み、nは、0からNまでの整数であり、各整数nは、イベントストリームESに関連するイベントの現在の長さまたは現在の数を表し、Nは、nの最大値または最終値を表す。
一部の実施形態においては、認証および認可のチェックが行われ、このチェックは、APIアクセストークンの存在のテスト、またはセッションのチェックもしくはパスワード/デジタル署名のテスト、またはクライアントもしくはクライアントによって行われたサービス要求を有効化するための何らかのその他の適切な方法であってよい。
ステップ310は、ステップ308において作成されたブロックチェーントランザクションTX0の出力が、少なくとも、ダスト出力である第1の未使用トランザクション出力(UTXO0_dust)を含むことを示す。一部の実施形態において、前記ダスト出力は、ステップ308においてHDキーチェーンKから導出された一連の鍵の中の第1の導出された鍵ペアK0によって保護されたロックスクリプトに関連付けられる。ダスト出力は、トランザクションの定義された制限未満であるかまたは定義された最小値を有する、すなわち、そのようなトランザクションを消費するために必要とされるマイニング手数料未満の(デジタル資産の)値に関連付けられる。運用フロートに関連するデジタル資産、または決済プロセッサによって維持されるかもしくは決済プロセッサに関連付けられるデジタル資産もしくは暗号通貨資金に関連するその他の入力も存在する場合ある。デジタル資産変更出力であるトランザクションのその他の出力を有することも可能である。
したがって、一部の実施形態において、本実施形態の通りにイベントストリームESを作成するためのブロックチェーントランザクションのCreateテンプレートは、第1の入力がダストであってはならないCreateテンプレートである。有利なことに、これは、イベントストリームに前のエントリがなく、これが最初のエントリであることを示すことになる。また、Createテンプレートは、テンプレートの第1の出力がダストであることと、新しいイベントストリームESの作成以外にCreate状態に関連するイベントデータがないので、データキャリアまたはデータ出力がない(したがって、OP_RETURNがない)こととを指定する。
ステップ312は、ブロックチェーンにトランザクションTX0を送ることを示す。ここで、トランザクションは、プラットフォームプロセッサに関連するマイナーノードまたはBSVノードのソフトウェアによって、後続のブロックに含めるためにビットコインSVネットワークなどのブロックチェーンに送られる場合がある。一部の実施形態においては、マイニングされると、トランザクション識別子TX0が、新しく作成されたイベントストリームESまたはクライアントに関連する新しいスマートコントラクトを一意に特定するために使用されてよい。
ステップ314は、TX0の作成されたイベントストリームESに関連する結果をクライアントに送信することを示し、結果は、HTTP送信プロトコル形式で提供される。イベントストリームに関連する結果は、ブロックチェーンとは別にコピーまたは保存される場合がある。
図4は、ブロックチェーン上のスマートコントラクトに関連する既存のイベントストリームESの末尾に新しいイベントを追加することによってスマートコントラクトの状態を更新することに関する。
ステップ402は、クライアントからの要求を受信することを示し、要求は、要求内で特定された既存のスマートコントラクトSCを修正または更新することを求めるものである。クライアントからの要求は、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式である。
ステップ404において、スマートコントラクトの現在の状態ESnが判定される。これは、スマートコントラクトSCに固有であるイベントストリームESに基づいて判定される。イベントストリームESは、ブロックチェーンに記憶または実装される。場合によっては、スマートコントラクトSCの現在の状態は、オフチェーンで記憶されるイベントストリームESのスナップショットまたはログから判定されてもよい。たとえば、このログまたはスナップショットデータベースは、図1のプラットフォーム100内に設けられてよく、またはプラットフォームプロセッサによって取り出されるかもしくはアクセスされ得るロケーションに記憶されてよい。
図3のステップ308に関連して検討されたように、一部の実施形態において、ブロックチェーン上のイベントストリームESは、K=Kn=0 to Nであるようなキーチェーンまたは鍵のシードのペアKに関連付けられ、nは、0~Nの整数であり、各整数nは、イベントストリームESに関連するイベントの現在の長さまたは現在の数を表し、Nは、nの最大値または最終値を表す。一部の実施形態においては、認証および認可のチェックが行われ、このチェックは、APIアクセストークンの存在のテスト、またはセッションのチェックもしくはパスワード/デジタル署名のテスト、またはクライアントもしくはクライアントによって行われたサービス要求を有効化するための何らかのその他の適切な方法であってよい。
ステップ406は、イベントEnに関連するデータを特定または取得することを示し、これは、ステップ402の受信された要求内のスマートコントラクトSCに関するイベントデータに基づいて、ブロックチェーン上のイベントストリームESに現在追加または末尾に追加されるイベントである。
ステップ408は、スマートコントラクトSCのイベントストリームESに関連する前のブロックチェーントランザクションTXn-1を特定することを含む。特定されると、次に、特定された前のトランザクションTXn-1に関連する鍵ペアKn-1が決定される。上述のように、これは、ステップ404において説明された同じシード鍵ペアKに基づいてよい。
ステップ410は、0<n<NであるイベントストリームESのための現在のブロックチェーントランザクションTXnを作成することを示す。一部の実施形態においては、現在のイベントEnのための鍵ペアKnが、シード鍵ペアKから導出される。イベントストリームESの末尾に追加される現在のイベントEnのために作成されるブロックチェーントランザクションTXnは、以下を含む。
- 前のトランザクションTXn-1に関連するダスト出力を消費する第1の入力であって、前記消費が、前のトランザクションのための取得された鍵ペアKn-1によって認可される、第1の入力、
- 現在のトランザクションTXnのダスト出力である第1の未使用トランザクション出力(UTXOn_dust)であって、前記ダスト出力が、導出された鍵ペアによって保護されたロックスクリプトに関連付けられる、第1の未使用トランザクション出力(UTXOn_dust)、および
- 現在のイベントEnを表すイベントデータに関連する最終的な未使用トランザクション出力(UTXOn_data)。
上述のように、ダスト出力は、トランザクションの定義された制限未満であるかまたは定義された最小値を有する(デジタル資産)値に関連付けられる。運用フロートに基づくデジタル資産に関連するその他の入力も存在する場合がある。このフロートは、プラットフォームプロセッサによって制御されてよい。デジタル資産変更出力であるトランザクションのその他の出力を有することも可能である。
したがって、一部の実施形態において、本実施形態の通りにイベントストリームを更新するためのブロックチェーントランザクションのUpdateテンプレートは、第1の入力がダストでなければならず、第1の出力がダストでなければならないUpdateテンプレートである。有利なことに、これは、イベントストリーム内の前のエントリの存在を示すことになる。これは、当該イベントEn(今のまたは現在のイベントデータ)が、スマートコントラクトSCの前のトランザクションまたは状態の後に来ることも示す。したがって、有利なことに、トランザクションは、ダストチェーンをたどり、次の状態の前に来る。Updateテンプレートは、データキャリア、すなわち、現在のイベントまたは状態に関連するイベントデータまたは結果を運ぶデータ出力を含む。これは、消費不可能なOP-RETURN出力である場合がある。
トランザクションにおけるダスト出力の使用は、ブロックチェーン内のイベントストリームESに関してトランザクションが発生するときに、すべてのそれらのトランザクションの不変の連続的な記録を維持するために有利である。これは、ブロックチェーンにトランザクションを記帳することによって、すべてのブロックチェーントランザクションがタイムスタンプを付けられ、ブロックチェーン内で順序通りであり続けるが、これが、それらのトランザクションの発生順の保存を保証しないからである。これは、トランザクションが異なる時間にブロックにマイニングされる可能性があるからである。現在のトランザクションの第1の入力として消費される前のトランザクションのダスト出力の使用であって、消費が、各トランザクションのロック/ロック解除スクリプトに関連するそれぞれの一意の鍵に基づく、使用が、時系列順のイベントストリームの明確な連続した改ざん防止記録を保証する。
ステップ412は、ブロックチェーンにトランザクションTXnを送ることを示す。ここで、トランザクションは、プラットフォームプロセッサに関連するマイナーノードまたはBSVノードのソフトウェアによって、後続のブロックに含めるためにビットコインSVネットワークなどのブロックチェーンに送られる場合がある。一部の実施形態においては、マイニングされると、トランザクション識別子が、イベントストリームESまたはスマートコントラクトSCを一意に特定するために使用されてよい。
ステップ414は、TXnの作成されたイベントストリームESに関連する結果をクライアントに送信することを示し、結果は、HTTP送信プロトコル形式で提供される。結果は、ブロックチェーンとは別にコピーまたは保存される場合がある。一部の実施形態において、これは、最終的な未使用トランザクション出力(UTXOn_data)内のイベントデータに基づいてよい。一部の実施形態において、(UTXOn_data)内のイベントEnに関するイベントデータは、前記イベントデータのハッシュを含み、それによって、これがプラットフォームプロセッサによって非公開に保たれることを保証する。ハッシュは、プラットフォームプロセッサによって適用されてよく、またはクライアントによって適用されてよく、すなわち、一部の実施形態においては、イベントEnのためのステップにおいて決済プロセッサによって受信される要求に関連するイベントデータを生成する前に適用されてよい。ハッシュがクライアントによって適用される場合、要求内のイベントデータは、プラットフォームプロセッサに到達する前であっても非公開である。その他の実施形態において、イベントデータは、ブロックチェーンから公的に利用可能な生データとして提供されてよい。
図5は、ブロックチェーン上の既存のスマートコントラクトおよび対応するイベントストリームを終了することに関する。
ステップ502は、クライアントからの要求を受信することを示し、要求は、ブロックチェーンを使用して実装されたイベントストリームESに関連付けられる既存のスマートコントラクトSCの終了に関連する。クライアントからの要求は、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式である。
図3のステップ308に関連して検討されたように、ブロックチェーン上のイベントストリームESは、K=Kn=0 to NであるようなキーチェーンKに関連付けられ、nは、0~Nの整数であり、各整数nは、イベントストリームESに関連するイベントの現在の長さまたは現在の数を表し、Nは、nの最大値または最終値を表す。一部の実施形態においては、認証および認可のチェックが行われ、このチェックは、APIアクセストークンの存在のテスト、またはセッションのチェックもしくはパスワード/デジタル署名のテスト、またはクライアントもしくは行われた要求を有効化する何らかのその他の適切な方法であってよい。
ステップ504において、スマートコントラクトの現在の状態ESnが判定される。これは、スマートコントラクトSCに固有であるイベントストリームESに基づいて判定される。イベントストリームESは、ブロックチェーンに記憶または実装される。場合によっては、スマートコントラクトSCの現在の状態は、オフチェーンで記憶されるイベントストリームESのスナップショットまたはログから判定されてもよい。たとえば、このログまたはスナップショットデータベースは、図1のプラットフォーム100内に設けられてよく、またはプラットフォームプロセッサによって取り出されるかもしくはアクセスされ得るロケーションに記憶されてよい。
ステップ506は、最終的なイベントENに関連するデータを特定または取得することを示し、これは、ステップ502の受信された要求内のスマートコントラクトSCに関するイベントデータに基づいて、ブロックチェーン上のイベントストリームESに現在追加または末尾に追加されるイベントである。
ステップ508は、スマートコントラクトSCのイベントストリームESに関連する前のブロックチェーントランザクションTXN-1を特定することを含む。特定されると、次に、特定された前のトランザクションTXN-1に関連する鍵ペアKN-1が決定される。上述のように、これは、ステップ504において説明された同じシード鍵ペアKに基づく。
ステップ510は、n=Nである新しいイベントストリームESのための現在のブロックチェーントランザクションTXNを作成することを示す。一部の実施形態においては、現在のイベントENのための鍵ペアKNが、シード鍵ペアKから導出される。スマートコントラクトに関するイベントストリームESを終了するための現在のイベントENのために作成されるブロックチェーントランザクションTXNは、以下を含む。
- 前のトランザクションTXN-1に関連するダスト出力を消費する第1の入力であって、前記消費が、ステップ508において取得された前のトランザクションのための取得された鍵ペアKN-1によって認可される、第1の入力
- 定義されたダスト出力の制限を上回るデジタル資産に関連する第1の未使用トランザクション出力(UTXON)
スマートコントラクトSCの終了された状態を示すイベントストリームの最終的なイベントでは、すべてのトランザクション出力が変更を返す。終了されたイベントストリームの次の段階を追跡する要件または必要がないので、ダスト出力は存在しない。したがって、n=Nであるとき、ダスト出力は、プラットフォームプロセッサによって提供されない。言い換えると、出力は、イベントストリームESに関連する変更出力(デジタル資産の支払い)と考えられてよい。有利なことに、これは、追跡されているイベントストリームの最終的な終了された状態を表すかまたは示す。一部の実施形態において、イベントまたはコントラクトが終了された状態にあるので、出力に関してイベントデータまたはデータキャリア要素、すなわち、OP_RETURNも存在しない。したがって、別のダストおよびデータキャリア出力は、イベントストリームESを終了させるために生成されず、第1の出力は、やはり終了を示す、データ出力がないこととともに、これがブロックチェーン上のイベントストリームの終わりであることを知らせるためにダストの制限を上回っている。運用フロートからのデジタル資産に関連するその他の入力または変更出力が、存在する可能性がある。一部の実施形態においては、図3および図4に関連して説明されたダストに関連するデジタル資産の値が、単に1つまたは複数のその他の出力に追加される場合がある。
したがって、一部の実施形態において、本実施形態の通りにイベントストリームを終了するためのブロックチェーントランザクションのCloseテンプレートは、第1の入力が、図6のUpdateテンプレートの第1の入力のようにダストでなければならないCloseテンプレートである。第1の出力は、ダストであってはならず、有利なことに、これは、台帳の終わりのマーカーとして働き、さらに、CloseテンプレートをUpdateテンプレートと区別する。図3のCreateテンプレートと同様に、CloseテンプレートにはOP_RETURNなどのデータキャリアが存在しない。
ステップ512は、ブロックチェーンにトランザクションTXNを送ることを示す。ここで、トランザクションは、プラットフォームプロセッサに関連するマイナーノードまたはBSVノードのソフトウェアによって、後続のブロックに含めるためにビットコインSVネットワークなどのブロックチェーンに送られる場合がある。
ステップ514は、TXNの作成されたイベントストリームESに関連する結果をクライアントに送信することを示し、結果は、HTTP送信プロトコル形式で提供される。
図6は、本開示の第2の態様に関し、図1に示されたプラットフォーム100などの、ブロックチェーンに関連するスマートコントラクトを実行するためのプラットフォームにアクセスするためのコンピュータによって実施される方法を示す。図6の方法は、クライアントに関連する1つまたは複数のプロセッサによって実施される。
ステップ602において、プラットフォームに関連するアプリケーションプログラミングインターフェース(API)エンドポイントが、特定される。前述のように、これは、ホストプラットフォームプロセッサに関連するAPIである場合があり、それぞれがサービスエンドポイントまたは宛先アドレスを有する、サービスを実施する責任を負う1つまたは複数のさらなるプロセッサが存在する可能性がある。
ステップ604において、クライアントが、図1の計算サービス104などのサービスの要求を準備する。要求は、スマートコントラクトSCに関連する1つまたは複数のイベントEnに関連付けられる。一部の実施形態において、ステップは、要求が、さらなるプライバシーおよびセキュリティのために、生データの代わりに、イベントEnに関するハッシュされたイベントデータを含むように、要求されているイベントEnに関連するイベントデータにハッシュ関数を適用することを含む。
一部の実施形態のクライアントは、要求が正しいエンドポイントにルーティングされることが可能であり、プラットフォームプロセッサが要求元のクライアントの有効性および要求されたサービスを使用するクライアントのパーミッションをチェックすることが可能であるように、要求にクライアントエイリアスもしくは識別子および/またはサービス識別子を含める。
ステップ606において、プラットフォームプロセッサがHTTPまたはREST APIとして実装されているので、ステップ604で準備された要求が、ハイパーテキスト転送プロトコル(HTTP)または同様の送信プロトコル形式を使用して送信される。これは、上で検討されたプラットフォームプロセッサのためのゲートウェイサービスによって管理および/または提供されてよい。
ステップ608は、スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび検証ツールを取得することを含む。ソフトウェアライブラリは、スマートコントラクトSCに関連するイベントストリームESに提供されたイベントEnの再生または回復に基づいて、スマートコントラクトSCの状態のスナップショットまたはインスタンスを回復することを可能にする機能を含んでよい。これは、ソフトウェア開発キット(SDK)の形態で提供されてよい。有利なことに、SDKとともにクライアントに提供される検証ツールは、クライアントがスマートコントラクトの任意の回復または再生されたスナップショットを、スマートコントラクトSCの結果として生じる状態を示すイベントストリームESのそれぞれの記憶または取得されたインスタンスと比較することを可能にする。これは、クライアントによって受信されたいずれの結果も改ざんされていないこと、または誤った結果がクライアントに提供されていないことをチェックするためのものである。
ステップ610において、次に、スマートコントラクトの現在の状態に基づく結果が、受信される。一部の実施形態において、受信される結果は、要求内のイベントEnに関連するブロックチェーントランザクションの出力スクリプトに関連する。この結果は、HTTP送信プロトコル形式でクライアントに提供される。一部の実施形態において、結果は、イベントストリームに現在反映されているスマートコントラクトの状態を特定する場合がある。最新のイベントEnに関連するイベントストリームESは、プラットフォームプロセッサ内のまたはプラットフォームプロセッサに関連する、ブロックチェーンとは別のログまたはイベントストリームストレージに保存される場合がある。
有利なことに、ステップ608におけるソフトウェアライブラリは、スマートコントラクトSCのための現実のまたは実際の入力イベントEnに関連するテスト入力イベントTEnに基づいて、スマートコントラクトSCのスナップショットまたはインスタンスを再生または回復するための機能性をクライアントに提供する。テスト入力TEnは、プラットフォームによって処理された最新のイベントEnに基づく場合があり、またはクライアントによって提供された以前の入力イベントEnである場合がある。それから、そのテストイベントTEnに基づくこの回復されたスナップショットは、その対応する現実のイベントEnに関してまたはその対応する現実のイベントEnに続いてイベントストリームESに記録されたスマートコントラクトの状態ESnを独立して検証するために使用され得る。
場合によっては、クライアントは、テストイベントTEnに基づいてソフトウェアを実行することができるように、スマートコントラクトSCのソフトウェアに関連する実行可能コードを既に有していてよい。その他の実施形態において、クライアントは、プラットフォームのためのいかなるゲートウェイサービスも使用することなく、プラットフォームプロセッサを介してスマートコントラクトSCに関連する実行可能コードを直接呼び出すことができる場合があり、すなわち、直接呼び出しは、リモートプロシージャコール(RPC)を介する場合がある。これは、クライアントが対応するテスト入力TEnを使用することによって、所与の入力イベントEnに基づいて、所与のインスタンスをテストまたは再生するためのコードを呼び出すことができるためである。したがって、ソフトウェアライブラリは、検証または監査の目的で、スマートコントラクトSCに関するイベントストリームESに関連付けられる現実のイベントEnの再現を可能にする。
検証ツールは、有利なことに、クライアントが再現または回復されたスナップショットを、所与のイベントEnに関して(ブロックチェーン)トランザクションに記録される、すなわち、スマートコントラクトSCに関連するイベントストリームESに関連付けられるスマートコントラクトの状態と比較することを可能にする、クライアントに提供される1つまたは複数のソフトウェアモジュールまたはコードを含んでよい。検証されている現実のイベントEnがイベントストリームESの最新のイベントである必要はないが、これが、通常最もよくあるケースであることに留意されたい。行われ、既にイベントストリームESに提供されたかまたは書き込まれた任意のその他の以前の現実のイベントEnに基づいてテスト入力TEnを提供することが可能であることに留意されたい。
一部の実施形態において、検証ツールは、イベントログまたはインスタンススナップショットデータベースになど、オフチェーンで記憶される場合があるスマートコントラクトSCの現在のスナップショットまたは状態との比較によって、再生または回復されたイベントストリームの検証も可能にして、それらが一致するかどうかを検証する。一部の実施形態において、検証ツールは、必要とされる場合、クライアントがブロックチェーンからのイベントストリームESに直接関連するデータとの比較を実行することも可能にする場合がある。
したがって、一部の実施形態において、クライアントに関連するSDK(クライアントライブラリ)と組み合わせた検証ツールは、以下のステップを可能にするかまたは実行する。
(a)スマートコントラクトSCに関連する実行可能コードを取得する。一部の例において、これは、クライアントが既に利用可能なバイナリコードに基づいてよく、またはクライアントが、エグゼキュータプラットフォームを介して直接スマートコントラクトソフトウェアの最新バージョンを呼び出してよい。
(b)直接、すなわち、プラットフォームのゲートウェイまたはHTTPS APIを使用せずに、スマートコントラクトに関して既に行われ、したがってブロックチェーンに既に書き込まれている実際のまたは現実のイベントEnに基づくテスト入力イベントTEnを提供する。したがって、テストイベントTEnは、スマートコントラクトに関するログ、すなわち、イベントストリームESに関連して処理され、ブロックチェーンに記憶された現実のイベントEnと同じであるかまたはそれに基づく。したがって、検証ツールは、対応するテスト入力イベントTEnを使用して検証されているイベントEnに基づいてスマートコントラクトSCのスナップショットまたは状態を回復するために、イベントストリームESを再生するためのコントラクトソフトウェアを直接呼び出すための機能を有する。
(c)検証ツールは、概して、既に発生した現実のイベントの代わりにテストイベントに基づいてコントラクトソフトウェアを呼び出すように構成されるので、エグゼキュータプラットフォーム100は、スマートコントラクトSCに関連するイベントストリームESにそのようなテストイベントTEnを記録するためにデータを書き込まず、またはデータ書き込み動作もしくはサービスを呼び出さない。検証ツールによって呼び出されたテストイベントの記録は、クライアントかまたはプラットフォームかのどちらかに関連する別のオフチェーンログまたはストアに記録されることが可能である。しかし、テストイベントは、ブロックチェーンに書き込まれず、イベントストリームは、発生したスマートコントラクトSCに関する現実のイベントEnのシーケンスの明確なインジケーションのみを含む。
有利なことに、本開示の第1および第2の態様の方法によって実装される、スマートコントラクトの実行を追跡するための、ブロックチェーンに関連するイベントストリームおよびその逐次ログの実装は、スマートコントラクトのイベントの不変性およびイベントの順序付けの不変性に関する保証を提供する。書き込まれると、以下の方法のいずれかでスマートコントラクトを改ざんするすべての試みは、防止されるかまたは明らかにされるかのどちらかである。
- イベントの内容を変更する
- イベントの順序を変える
- ストリームの始めまたは途中にイベントを挿入する
- ストリームの任意の場所からイベントを削除する
言い換えると、本開示は、スマートコントラクトを追跡するイベントストリームに関する以下の属性を証明可能にする。
- イベントストリームの個々のエントリが、書き込まれてから変更されていない
- 以前に連続していたエントリの間にエントリが挿入されていない
- エントリが削除されていない
- エントリが順序を変えられていない
これらの特性および利点は、監査/コンプライアンスログから、ステートマシンレプリケーション、すべてのクライアントのためにブロックチェーンからデータの読み取り、ブロックチェーンにデータを書き込むためのより効率的で耐改ざん性があり正確な方法まで、多くの実用的な応用を有する。
実装例
イベントストリームESなどのイベントログのキャプチャが有用であるイベントストリームの例は、ブロックチェーンを使用するまる〇ばつX(または三目並べとして広く知られる)などのゲーム用に構成されるスマートコントラクトSCを追跡および記録するアプリケーションである。
以下の節は、特定の結果がプラットフォームサービスを通じてどのようにして提供されるかを示すために異なる種類のスマートコントラクトの構築を詳しく説明する。ここで、スマートコントラクトSCは、三目並べのゲーム用である。
三目並べは、3×3のマス目に交互に印をつける2人のプレイヤーXおよび〇のための紙と鉛筆を使ったゲームである。横、縦、または斜めに自分の印を3つ並べることに成功したプレイヤーが、勝者である。ゲームに勝つために、プレイヤーは、横、縦、または斜めに自分の印を3つ並べなければならない。
ゲームの図解が、図7に見られる。
ゲームは、2人のプレイヤー〇およびXによって行われる。プレイヤーは、指名され、マスの勝利する並びが構築されるか、またはマスのそのような並びが構築されない可能性があるまで、順番にマスを埋めてよい。
各マスは、座標ペアA1、B1、...、B3、C3によってラベル付けされる。1つのマスは、埋められているかまたは空であるかのどちらかである可能性がある。埋められたマスは、1人のプレイヤーによって埋められなければならない。ゲーム全体は、入れ子にされたステートマシンのペアとしてモデル化されてよい。単一のマスのステートマシンが、図7aに見られる。
上記のマスのステートマシン(A1~C3)の9つのインスタンスを含む外側のステートマシンが、図7bに見られる。
ゲームの1回のプレイは、プレイヤーを説明する初期メタデータと、それに続く順番に埋められたマスのログとによって表現されてよい。これは、ゲームが任意のレプリカまたはエンティティまたはノードによっても再現され、ゲームの結果が独立して検証されるのに十分なデータを提供する。
そのイベントストリームによって表現された、本明細書の前の部分の例示的なゲームは、次のように図示される場合がある。
Figure 2023513848000003
上のログの各エントリは、ゲーム(SC)に関するイベントストリームES内のイベントEnである。
AliceおよびBobは、モバイルアプリなどのカスタムクライアントソフトウェアを使用して、プラットフォームサービスのゲートウェイとインタラクションする可能性がある。ゲートウェイは、図1bに見られた基礎となるエグゼキュータプラットフォームとインタラクションし、エグゼキュータプラットフォームは、新しいイベントストリームESの構築を手配し、適切なスマートコントラクトプログラムSCにイベントを供給する責任を負う。
各ターンの後、一連のオンチェーントランザクションとしてカプセル化されたイベントストリームESが、ローカルまたはクライアント側のアプリケーションがゲームの現在の状態ESnを表示することを可能にするために、AliceとBobとの両方に複製されるかまたは送り返されてよい。代替的に、ゲームのスナップショットの状態が小さい場合、ゲームの現在の状態は、更新されるときに両方のプレイヤーに戻して提示されてもよい。
ゲームにおけるプレイヤーによる手を指すプロセスが、図8のシーケンスフロー図に詳細に示される。
この例においては、その他のプレイヤーに送信されるものとして示された明示的なメッセージが存在しないが、これは、存在する場合がある。上図を簡単にするために、内部のメッセージングは省略される。スマートコントラクトに関するイベントストリームは、コントラクトのイベントのオブザーバレプリケーション(observer replication)の機能を可能にする。したがって、任意の認可されたエンティティが、更新を受信するために所与のイベントストリームESに関する通知を購読する場合がある。同様に、スナップショットの通知が追加されてよいが、上では示されていない。
三目並べの同じ例を用いて、以下で、イベントストリームESを使用するスマートコントラクトSCの連続的なイベントの不変の改ざん防止ログの提供の例を与える。
n=4までのゲーム(スマートコントラクト、すなわちゲームの0から4の5つの状態)が以下の状態であると考える。
Figure 2023513848000004
ゲームが進むにつれて、第3の態様の方法によって、ブロックチェーントランザクションの出力に基づくログが、以下のように記録される場合がある。
Figure 2023513848000005
下に与えられるように、ログがゲームの実際の状態を反映しないように、n=4のときの結果に関して異なるエントリを挿入するなど、このシーケンスに関して維持されているログのコピーを改ざんまたは変更しようとする試みがあると考える。
Figure 2023513848000006
これは、n=3の場合のトランザクションのダスト出力を消費するトランザクションの入力が有効化されないので、ブロックチェーン上のイベントストリームの自動的に生成された逐次ログのチェックまたは監査によって直ちに特定される。そのようなゲームが金融取引(たとえば、定額課金)を伴う場合、自身のゲームログの真実性と、所与のゲームプロバイダが宣伝しているオッズまたは難易度を守っているか否かとをチェックしたいというプレイヤーからの要望がある場合があることは、理解されるであろう。上述のように、イベントストリームESに所与のゲームの個々のゲームエントリ(またはそれらのハッシュ)を記憶することによって、プレイヤーは、ゲームプロバイダによって維持されるいかなる内部システムとも無関係にゲーム内イベントがチェックされ、検証され得ると確信することができる。
所与のイベントストリーム内の各イベントがゲームセッション内で発生する個々のイベントに必ずしも対応しないことは、さらに理解されるであろう。イベントストリームは、イベントの正確で逐次的な改ざん防止ログが望ましい場合に前記イベントの任意のログのために定義されてよい。所与のイベントストリームにおけるイベントの例は、たとえば、ローカルまたはリモート(好ましくはオフチェーン)で実行されている所与のスマートコントラクトの入力および/または出力、所与のオンラインメッセージングの会話の2人以上の参加者の間で送信されたメッセージ、たとえば、天気、たとえば、乗り物、商品、人の位置などを測定するためのセンサーまたはIoTデバイスによって実行される物理的な測定、たとえば、製造元、輸送、薬剤師の場所、処方量、受取人情報などを含む薬物/医薬品の追跡、たとえば、(口座が暗号通貨を入金されるのかまたは法定通貨を入金されるかにかかわらず)口座に入金および/または口座から出金される額、為替レートの変化、取引の実行、商品または株式の購入の要求などの金融取引を含んでよい。結局、イベントストリームが生成され、使用される状況は、そのようなイベントストリームを生成するためにプラットフォームプロセッサを使用する関係者の都合のよいときである。
次に図9に目を向けると、本開示の少なくとも1つの実施形態を実施するために使用されてよいコンピューティングデバイス2600の例示的な簡略化されたブロック図が提供されている。様々な実施形態において、コンピューティングデバイス2600は、上で図示され、説明されたシステムのいずれかを実装するために使用されてよい。たとえば、コンピューティングデバイス2600は、図のDBMSの1つもしくは複数の構成要素として使用されるように構成されてよく、またはコンピューティングデバイス2600は、所与のユーザに関連付けられるクライアントエンティティであるように構成されてよく、クライアントエンティティは、図9のDBMSによって管理されるデータベースに関するデータベース要求を行う。したがって、コンピューティングデバイス2600は、ポータブルコンピューティングデバイス、パーソナルコンピュータ、または任意の電子コンピューティングデバイスであってよい。図9に示されるように、コンピューティングデバイス2600は、1つまたは複数のレベルのキャッシュメモリ、主メモリ2608および永続的ストレージ2610を含むストレージサブシステム2606と通信するように構成され得るメモリコントローラとを有する1つまたは複数のプロセッサ(集合的に2602とラベル付けされる)を含んでよい。主メモリ2608は、示されるように、ダイナミックランダムアクセスメモリ(DRAM)2618および読み出し専用メモリ(ROM)2620を含み得る。ストレージサブシステム2606およびキャッシュメモリ2602は、本開示において説明されるように、トランザクションおよびブロックに関連する詳細などの情報のストレージのために使用されてよい。プロセッサ2602は、本開示において説明される任意の実施形態のステップまたは機能を提供するために利用されてよい。
プロセッサ2602は、1つまたは複数のユーザインターフェース入力デバイス2612、1つまたは複数のユーザインターフェース出力デバイス2614、およびネットワークインターフェースサブシステム2616と通信することもできる。
バスサブシステム2604は、コンピューティングデバイス2600の様々な構成要素およびサブシステムが意図されたように互いに通信することを可能にするためのメカニズムを提供してよい。バスサブシステム2604は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用する場合がある。
ネットワークインターフェースサブシステム2616は、その他のコンピューティングデバイスおよびネットワークへのインターフェースを提供してよい。ネットワークインターフェースサブシステム2616は、その他のシステムからデータを受信し、コンピューティングデバイス2600からその他のシステムにデータを送信するためのインターフェースとして働く場合がある。たとえば、ネットワークインターフェースサブシステム2616は、データ技術者がデータセンターなどの遠隔地にいる間にデバイスにデータを送信し、デバイスからデータを受信することができるように、データ技術者がデバイスをネットワークに接続することを可能にする場合がある。
ユーザインターフェース入力デバイス2612は、キーボード、統合されたマウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどの音声入力デバイス、および/またはその他の種類の入力デバイスなどの1つまたは複数のユーザ入力デバイスを含んでよい。概して、用語「入力デバイス」の使用は、コンピューティングデバイス2600に情報を入力するためのすべての可能な種類のデバイスおよびメカニズムを含むように意図される。
1つまたは複数のユーザインターフェース出力デバイス2614は、ディスプレイサブシステム、プリンタ、または音声出力デバイスなどの非視覚的ディスプレイなどを含んでよい。ディスプレイサブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、発光ダイオード(LED)ディスプレイ、またはプロジェクションもしくはその他のディスプレイデバイスであってよい。概して、用語「出力デバイス」の使用は、コンピューティングデバイス2600から情報を出力するためのすべての可能な種類のデバイスおよびメカニズムを含むように意図される。1つまたは複数のユーザインターフェース出力デバイス2614は、たとえば、説明されたプロセスおよびその変形を実行するアプリケーションとのユーザのインタラクションを、そのようなインタラクションが適切である可能性があるときに促進するためのユーザインターフェースを提示するために使用されてよい。
ストレージサブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供する可能性がある基本的なプログラミングおよびデータ構造を記憶するためのコンピュータ可読ストレージ媒体を提供してよい。アプリケーション(プログラム、コードモジュール、命令)が、1つまたは複数のプロセッサによって実行されるとき、本開示の1つまたは複数の実施形態の機能を提供してよく、ストレージサブシステム2606に記憶されてよい。これらのアプリケーションモジュールまたは命令は、1つまたは複数のプロセッサ2602によって実行されてよい。ストレージサブシステム2606は、さらに、本開示に従って使用されるデータを記憶するためのリポジトリを提供してよい。たとえば、主メモリ2608およびキャッシュメモリ2602が、プログラムおよびデータのための揮発性ストレージを提供し得る。永続的ストレージ2610は、プログラムおよびデータのための永続的(不揮発性)ストレージを提供することができ、フラッシュメモリ、1つまたは複数のソリッドステートドライブ、1つまたは複数の磁気ハードディスクドライブ、関連する取り外し可能な媒体を伴う1つまたは複数のフロッピーディスクドライブ、関連する取り外し可能な媒体を伴う1つまたは複数の光学式ドライブ(たとえば、CD-ROMまたはDVDまたはブルーレイ)ドライブ、およびその他の同様のストレージ媒体を含む場合がある。そのようなプログラムおよびデータは、本開示において説明される1つまたは複数の実施形態のステップを実行するためのプログラムと、本開示において説明されるトランザクションおよびブロックに関連するデータとを含み得る。
コンピューティングデバイス2600は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、または下で説明される任意のその他のデバイスを含む様々な種類のものであってよい。さらに、コンピューティングデバイス2600は、1つまたは複数のポート(たとえば、USB、ヘッドフォンジャック、Lightningコネクタなど)を通じてコンピューティングデバイス2600に接続されてよい別のデバイスを含む場合がある。コンピューティングデバイス2600に接続される場合があるデバイスは、光ファイバコネクタを受け入れるように構成された複数のポートを含んでよい。したがって、このデバイスは、光信号を、処理のために、デバイスをコンピューティングデバイス2600に接続するポートを通じて送信されてよい電気信号に変換するように構成される場合がある。コンピュータおよびネットワークの変わり続ける性質が原因で、図9に示されたコンピューティングデバイス2600の説明は、デバイスの好ましい実施形態を示すことを目的とする特定の例としてのみ意図される。図9に示されたシステムよりも多くのまたは図9に示されたシステムよりも少ない構成要素を有する多くのその他の構成が可能である。
列挙される例示的な実施形態
本開示は、請求される態様および実施形態をよりうまく説明し、記述し、理解するための例示的な実施形態として本明細書において提供される、上記の態様に関連する以下の項に基づいて本明細書によって検討される。
1. ブロックチェーンに関連する1つまたは複数のスマートコントラクトの実行を可能にするためのコンピュータによって実施される方法であって、アプリケーションプログラミングインターフェース(API)に関連するプラットフォームプロセッサによって実施され、
クライアントからの要求を受信するステップであって、要求が、スマートコントラクト(SC)に関連し、クライアントからの要求が、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式に基づく、ステップと、
要求に関連するスマートコントラクトSCにアクセスするステップと、
ブロックチェーンに関連するイベントストリーム(ES)を特定するステップであって、イベントストリームESが、スマートコントラクトSCに固有であり、イベントストリームが、スマートコントラクトSCの状態を表す、ステップと、
特定されたイベントストリームESに基づいてスマートコントラクトSCの現在の状態ESnを判定するステップであって、nが、0からNまでの整数であり、各整数nが、スマートコントラクトSCに関連する現在の状態またはイベントの現在の数を表し、Nが、nの最大のまたは最終的な値または状態を表す、ステップと、
受信された要求に基づいてスマートコントラクトSCの実行を呼び出すステップと、
受信された要求に基づいて新しいイベントEnを処理するステップ、および
新しいイベントEnに基づいてスマートコントラクトの更新された現在の状態ESn+1を取得するステップ
を含むステップによってスマートコントラクトSCに関連するイベントストリームESを更新することを呼び出すステップと、
スマートコントラクトに関する更新された現在の状態ESn+1に基づく結果を記憶または提供するステップとを含む、方法。
2. スマートコントラクトSCの実行を呼び出すステップが、
受信された要求からスマートコントラクトSCに固有の識別子を取得すること、
識別子に基づいて、コントラクトストアから所与のスマートコントラクトSCにアクセスすること、
スマートコントラクトに関連する1つまたは複数のソフトウェアルーチンまたはプログラミング命令を実行するために、1つまたは複数のプロセッサにスマートコントラクトSCを提供することをさらに含む項1に記載の方法。
3. n=0であるという判定に基づいて、新しいイベントEnを処理するステップが、
受信された要求内のスマートコントラクトSCに関する新しいイベントEnを、スマートコントラクトSCに関連するそれぞれのイベントストリームESを作成するための第1のイベントとして特定するステップと、
ダスト出力である第1の未使用出力UTXO0_dustを含むブロックチェーントランザクションTX0を作成することによって、受信されたイベントEnを処理するステップと、
ブロックチェーンにトランザクションTX0を送るステップと、
更新されたイベントストリームESに関連する結果を提供するステップとを含む項1または2に記載の方法。
4. ブロックチェーントランザクションTX0が、スマートコントラクトSCの識別子またはハッシュを含む項3に記載の方法。
5. 0<n<Nであるという判定に基づいて、新しいイベントEnを処理するステップが、
受信された要求内のスマートコントラクトSCに関する新しいイベントEnを、スマートコントラクトSCに関連するそれぞれのイベントストリームESを修正するための現在のイベントとして特定するステップと、
イベントストリームESの前のトランザクションに関連するダスト出力を消費する第1の入力、
ダスト出力である第1の未使用トランザクション出力UTXOn_dust、および
現在のイベントEnを表すイベントデータに関連する最終的な未使用トランザクション出力UTXOn_data
を含むブロックチェーントランザクションTXnを作成することによって、受信されたイベントEnを処理するステップと、
ブロックチェーンにトランザクションTXnを送るステップと、
更新されたイベントストリームESに関連する結果を提供するステップとを含む項1または2に記載の方法。
6. 現在のブロックチェーントランザクションTXnの最終的な未使用トランザクション出力(UTXOn_data)内のイベントEnに関するイベントデータが、前記イベントデータのハッシュを含む項5に記載の方法。
7. 前記イベントデータのハッシュが、プラットフォームプロセッサによって適用される項6に記載の方法。
8. 前記イベントデータのハッシュが、プラットフォームプロセッサによって受信される要求に含められる前にクライアントによって適用される項6に記載の方法。
9. 現在のブロックチェーントランザクションTXnの最終的な未使用トランザクション出力(UTXOn_data)内のイベントEnに関するイベントデータが、生イベントデータを含む項6に記載の方法。
10. n=Nであるという判定に基づいて、新しいイベントEnを処理するステップが、
受信された要求内のスマートコントラクトSCに関する新しいイベントEnを、イベントストリームESを終了するための最終的なイベントとして特定するステップと、
イベントストリームESの前のトランザクションに関連するダスト出力を消費する第1の入力、および
定義されたダスト出力値を上回るデジタル資産に関連付けられる最終的な未使用出力UTXON
を含むブロックチェーントランザクションTXNを作成することによって、受信されたイベントEnを処理するステップと、
ブロックチェーンに作成されたトランザクションTXNを送るステップと、
TXNのイベントストリームESに関連する結果を提供するステップとを含む項1または2に記載の方法。
11. 送るステップが、作成されたトランザクションを、マイニングされるブロックチェーンに関連する後続のブロックに含めることを含む項3から10のいずれか1つに記載の方法。
12. 送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいてイベントストリームESを特定するステップを含む項3から11のいずれか1つに記載の方法。
13. 送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいてスマートコントラクトSCの状態を特定するステップを含む項3から12のいずれか1つに記載の方法。
14. 作成されたブロックチェーントランザクションが、
デジタル資産に関連する入力、および
デジタル資産に関連する1つまたは複数の変更出力をさらに含む項3から13のいずれか1つに記載の方法。
15. デジタル資産が、運用フロートに関連付けられる項14に記載の方法。
16. スマートコントラクトSCに関連するイベントストリームESで使用される階層的決定性キーチェーンKを決定するステップであって、キーチェーンKが、K=Kn=0 to Nとなるように、選択された親鍵ペアから導出された一連の秘密鍵/公開鍵ペアを含む、ステップを含む項3から15のいずれか1つに記載の方法。
17. スマートコントラクトに関連するイベントストリームESを更新することを呼び出すステップが、新しいイベントEnを処理するためにプラットフォームプロセッサに関連するデータライタにアクセスするステップをさらに含む項1から16のいずれか1つに記載の方法。
18. 結果が、スマートコントラクトSCのスナップショットの状態であり、前記結果が、プラットフォームプロセッサに関連するインスタンス状態データベースに記憶される、および/またはプラットフォームプロセッサに関連するインスタンス状態データベースからアクセス可能である項1から17のいずれか1つに記載の方法。
19. 結果が、HTTP送信プロトコル形式に基づいてクライアントに提供される項1から18のいずれか1つに記載の方法。
20. スマートコントラクトSCの現在の状態ESnに関連する結果が、
- イベントEnがブロックチェーンに送られたトランザクション識別子
- ブロックチェーンのヘッダへのトランザクションのマークル包含証明
- 前記トランザクションが含められたブロックヘッダのコピー
のうちの少なくとも1つを確認する証明書を含む項1から19のいずれか1つに記載の方法。
21. スマートコントラクトSCが、有限状態機械(FSM)として実装される節1から20のいずれか1つに記載の方法。
22. スマートコントラクトSCに関するイベントストリームESの各イベントに関する結果に基づくコピーまたは記録またはログをオフチェーンストレージリソースに記憶するステップを含む項1から21のいずれか1つに記載の方法。
23. APIが、ハイパーテキスト転送プロトコル(HTTP)アプリケーションプログラミングインターフェース(API)エンドポイントであり、前記エンドポイントが、HTTPセキュア(HTTPS)を使用してクライアントに提供される項1から22のいずれか1つに記載の方法。
24. APIが、プラットフォームプロセッサに関連するエイリアスであり、エイリアスが、プラットフォームプロセッサに固有であり、エイリアスに基づくアドレス指定サービスによって提供され、アドレス指定サービスが、定義されたまたはよく知られているロケーションからアクセス可能な機械可読リソースを有し、機械可読リソースが、プラットフォームプロセッサに関連する1つまたは複数の能力を含み、エイリアスが、認証のための非対称暗号鍵ペアに関連付けられる項1から23のいずれか1つに記載の方法。
25. クライアントからの要求の受信に応じて、方法が、要求に関連するスマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび/または検証ツールを提供するステップを含む項1から24のいずれか1つに記載の方法。
26. ブロックチェーンに関連するスマートコントラクトにアクセスするためのコンピュータによって実施される方法であって、複数のクライアントの中の所与のクライアントの1つまたは複数のプロセッサによって実施され、
スマートコントラクトSCを実行するためのプラットフォームに関連する1つまたは複数のプロセッサに関連するアプリケーションプログラミングインターフェース(API)エンドポイントを取得または特定するステップと、
スマートコントラクトSCに関連する1つまたは複数のイベントEnの要求をプラットフォームに送信するステップであって、要求が、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式に基づいて送信される、ステップと、
スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび検証ツールを取得するステップと、
要求されたイベントEnに関連するブロックチェーントランザクションの出力スクリプトに基づく結果を受信するステップであって、前記結果が、スマートコントラクトSCの更新された状態を表し、結果が、HTTP送信プロトコル形式を使用して受信される、ステップとを含む、方法。
27. 要求がイベントEnに関するハッシュされたイベントデータを含むように、イベントEnに関するイベントデータにハッシュ関数を適用するステップを含む項26に記載の方法。
28. 結果に基づいて、1つまたは複数のソフトウェアライブラリを使用してスマートコントラクトSCに関連するイベントストリームESを回復するステップ、
1つまたは複数の検証ツールを使用して、スマートコントラクトの状態を検証するために、回復されたイベントストリームESを結果と比較するステップをさらに含む項26または27に記載の方法。
29. 1つまたは複数のソフトウェアライブラリが、プラットフォームから受信されたソフトウェア開発キット(SDK)に関連付けられる項26から28のいずれか1つに記載の方法。
30. クライアントが、プラットフォームプロセッサに関連するエイリアスに関連付けられ、エイリアスが、プラットフォームプロセッサに固有であり、エイリアスに基づくアドレス指定サービスによって提供され、アドレス指定サービスが、定義されたまたはよく知られているロケーションからアクセス可能な機械可読リソースを有し、機械可読リソースが、クライアントに関連する1つまたは複数の能力を含み、エイリアスが、認証のための非対称暗号鍵ペアに関連付けられる項26または27に記載の方法。
31. プロセッサとメモリとを含むコンピューティングデバイスであって、メモリが、プロセッサによる実行の結果として、項1から25のいずれか1つに記載のコンピュータによって実施される方法をデバイスに実行させる実行可能命令を含み、コンピューティングデバイスが、プラットフォームプロセッサに関連する、コンピューティングデバイス。
32. プロセッサとメモリとを含むコンピューティングデバイスであって、メモリが、プロセッサによる実行の結果として、項26から30のいずれか1つに記載のコンピュータによって実施される方法をデバイスに実行させる実行可能命令を含み、コンピューティングデバイスが、クライアントに関連している、コンピューティングデバイス。
33. ワイヤレス通信ネットワークを介して少なくとも1つのクライアントに通信可能なように結合された少なくとも1つのプラットフォームプロセッサを含むコンピュータシステムであって、少なくとも1つのプラットフォームプロセッサが、少なくとも1つのクライアントからのHTTP要求を処理するためのアプリケーションプログラミングインターフェース(API)エンドポイントに関連付けられ、少なくとも1つのプラットフォームプロセッサが、項31に記載のコンピューティングデバイスに従って実装され、少なくとも1つのクライアントが、項32に記載のコンピューティングデバイスに従って実装され、少なくとも1つのプラットフォームプロセッサが、プラットフォームサービスの以下の構成要素、すなわち、
スマートコントラクトストア、
イベントストリームログ、
インスタンス状態データベース、および
データライタ
のうちの1つまたは複数にワイヤレス通信ネットワークを介して通信可能なように結合され、プラットフォームサービスが、複数のクライアントのためにブロックチェーンに関連する複数のサービスを提供する、コンピュータシステム。
34. コンピュータのプロセッサによって実行された結果として、項1から30のいずれか1つの方法をコンピュータに実行させる実行可能命令が記憶されたコンピュータ可読ストレージ媒体。
上述の態様および実施形態は、本開示を限定するのではなく、例示し、当業者は、添付の請求項によって定義される本開示の範囲を逸脱することなく多くの代替的な実施形態を設計することができることに留意されたい。請求項において、括弧に入れられた参照符号は、特許請求の範囲を限定するものと解釈されないものとする。単語「~を含む(comprising)」および「~を含む(comprises)」などは、任意の請求項または本明細書全体において列挙された要素またはステップ以外の要素またはステップの存在を除外しない。本明細書において、「~を含む(comprises)」は、「~を含む(includes)かまたは~からなる(consists of)」を意味し、「~を含む(comprising)」は、「~を含む(including)かまたは~からなる(consisting of)」を意味する。ある要素の単数形の言及は、そのような要素の複数形の言及を除外せず、その逆も同様である。本開示は、いくつかの異なる要素を含むハードウェアによって、および適切にプログラミングされたコンピュータによって実施されてよい。いくつかの手段を列挙するデバイスの請求項においては、これらの手段のうちのいくつかが、1つの同じハードウェアによって具現化される場合がある。単に特定の手段が互いに異なる従属請求項に記載されているという事実は、これらの手段の組合せが有利に使用され得ないことを示さない。
100 プラットフォームプロセッサ、プラットフォームサービス
102 データサービス、処理リソース
104 計算サービス、処理リソース
105 ブロックチェーンネットワーク
106 商取引サービス、処理リソース
108 API
110 ブロックチェーン/プラットフォームインターフェースソフトウェア
1000 エグゼキュータプラットフォーム
1000a イベントゲートウェイ
1000b イベントゲートウェイ
1001 顧客アプリケーション
1003 コントラクトストア
1004 データサービス
1005 ビットコインSVブロックチェーン
1006 コントラクト管理API
1007 コントラクトリポジトリ
1008 エグゼキュータ
1009 インスタンス状態データベース、インスタンススナップショットデータベース
2600 コンピューティングデバイス
2602 プロセッサ
2604 バスサブシステム
2606 ストレージサブシステム
2608 主メモリ
2610 永続的ストレージ
2612 ユーザインターフェース入力デバイス
2614 ユーザインターフェース出力デバイス
2616 ネットワークインターフェースサブシステム
2618 ダイナミックランダムアクセスメモリ(DRAM)
2620 読み出し専用メモリ(ROM)

Claims (34)

  1. ブロックチェーンに関連する1つまたは複数のスマートコントラクトの実行を可能にするためのコンピュータによって実施される方法であって、
    アプリケーションプログラミングインターフェース(API)に関連するプラットフォームプロセッサによって実施され、
    クライアントからの要求を受信するステップであって、前記要求が、スマートコントラクト(SC)に関連し、前記クライアントからの前記要求が、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式に基づく、ステップと、
    前記要求に関連する前記スマートコントラクトSCにアクセスするステップと、
    前記ブロックチェーンに関連するイベントストリーム(ES)を特定するステップであって、前記イベントストリームESが、前記スマートコントラクトSCに固有であり、前記イベントストリームESが、前記スマートコントラクトSCの状態を表す、ステップと、
    前記特定されたイベントストリームESに基づいて前記スマートコントラクトSCの現在の状態ESnを判定するステップであって、nが、0からNまでの整数であり、各整数nが、前記スマートコントラクトSCに関連する現在の状態またはイベントの現在の数を表し、Nが、nの最大のまたは最終的な値または状態を表す、ステップと、
    前記受信された要求に基づいて前記スマートコントラクトSCの実行を呼び出すステップと、
    前記受信された要求に基づいて新しいイベントEnを処理するステップ、および
    前記新しいイベントEnに基づいて前記スマートコントラクトの更新された現在の状態ESn+1を取得するステップ
    を含むステップによって前記スマートコントラクトSCに関連する前記イベントストリームESを更新することを呼び出すステップと、
    前記スマートコントラクトに関する前記更新された現在の状態ESn+1に基づく結果を記憶または提供するステップと
    を含む、方法。
  2. 前記スマートコントラクトSCの実行を呼び出すステップが、
    前記受信された要求から前記スマートコントラクトSCに固有の識別子を取得すること、
    前記識別子に基づいて、コントラクトストアから所与のスマートコントラクトSCにアクセスすること、
    前記スマートコントラクトに関連する1つまたは複数のソフトウェアルーチンまたはプログラミング命令を実行するために、1つまたは複数のプロセッサに前記スマートコントラクトSCを提供すること
    をさらに含む請求項1に記載の方法。
  3. n=0であるという判定に基づいて、新しいイベントEnを処理するステップが、
    前記受信された要求内の前記スマートコントラクトSCに関する前記新しいイベントEnを、前記スマートコントラクトSCに関連するそれぞれのイベントストリームESを作成するための第1のイベントとして特定するステップと、
    ダスト出力である第1の未使用出力UTXO0_dustを含むブロックチェーントランザクションTX0を作成することによって、受信されたイベントEnを処理するステップと、
    前記ブロックチェーンに前記ブロックチェーントランザクションTX0を送るステップと、
    前記更新されたイベントストリームESに関連する結果を提供するステップと
    を含む請求項1または2に記載の方法。
  4. 前記ブロックチェーントランザクションTX0が、前記スマートコントラクトSCの識別子またはハッシュを含む請求項3に記載の方法。
  5. 0<n<Nであるという判定に基づいて、新しいイベントEnを処理するステップが、
    前記受信された要求内の前記スマートコントラクトSCに関する前記新しいイベントEnを、前記スマートコントラクトSCに関連するそれぞれのイベントストリームESを修正するための現在のイベントとして特定するステップと、
    前記イベントストリームESの前のトランザクションに関連するダスト出力を消費する第1の入力、
    ダスト出力である第1の未使用トランザクション出力UTXOn_dust、および
    前記現在のイベントEnを表すイベントデータに関連する最終的な未使用トランザクション出力UTXOn_data
    を含むブロックチェーントランザクションTXnを作成することによって、受信されたイベントEnを処理するステップと、
    前記ブロックチェーンに前記トランザクションTXnを送るステップと、
    更新されたイベントストリームESに関連する結果を提供するステップと
    を含む請求項1または2に記載の方法。
  6. 前記現在のブロックチェーントランザクションTXnの前記最終的な未使用トランザクション出力(UTXOn_data)内の前記イベントEnに関する前記イベントデータが、前記イベントデータのハッシュを含む請求項5に記載の方法。
  7. 前記イベントデータの前記ハッシュが、前記プラットフォームプロセッサによって適用される請求項6に記載の方法。
  8. 前記イベントデータの前記ハッシュが、前記プラットフォームプロセッサによって受信される前記要求に含められる前に前記クライアントによって適用される請求項6に記載の方法。
  9. 前記現在のブロックチェーントランザクションTXnの前記最終的な未使用トランザクション出力(UTXOn_data)内の前記イベントEnに関する前記イベントデータが、生イベントデータを含む請求項6に記載の方法。
  10. n=Nであるという判定に基づいて、新しいイベントEnを処理するステップが、
    前記受信された要求内の前記スマートコントラクトSCに関する前記新しいイベントEnを、前記イベントストリームESを終了するための最終的なイベントとして特定するステップと、
    前記イベントストリームESの前のトランザクションに関連するダスト出力を消費する第1の入力、および
    定義されたダスト出力値を上回るデジタル資産に関連付けられる最終的な未使用出力UTXON
    を含むブロックチェーントランザクションTXNを作成することによって、受信されたイベントEnを処理するステップと、
    前記ブロックチェーンに前記作成されたトランザクションTXNを送るステップと、
    TXNの前記イベントストリームESに関連する結果を提供するステップと
    を含む請求項1または2に記載の方法。
  11. 前記送るステップが、作成されたトランザクションを、マイニングされる前記ブロックチェーンに関連する後続のブロックに含めることを含む請求項3から10のいずれか一項に記載の方法。
  12. 送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいて前記イベントストリームESを特定するステップを含む請求項3から11のいずれか一項に記載の方法。
  13. 送られたブロックチェーントランザクションに関連するトランザクション識別子に基づいて前記スマートコントラクトSCの状態を特定するステップを含む請求項3から12のいずれか一項に記載の方法。
  14. 作成されたブロックチェーントランザクションが、
    デジタル資産に関連する入力、および
    前記デジタル資産に関連する1つまたは複数の変更出力
    をさらに含む請求項3から13のいずれか一項に記載の方法。
  15. 前記デジタル資産が、運用フロートに関連付けられる請求項14に記載の方法。
  16. 前記スマートコントラクトSCに関連する前記イベントストリームESで使用される階層的決定性キーチェーンKを決定するステップであって、前記階層的決定性キーチェーンKが、K=Kn=0 to Nとなるように、選択された親鍵ペアから導出された一連の秘密鍵/公開鍵ペアを含む、ステップを含む請求項3から15のいずれか一項に記載の方法。
  17. 前記スマートコントラクトに関連する前記イベントストリームESを更新することを呼び出す前記ステップが、前記新しいイベントEnを処理するために前記プラットフォームプロセッサに関連するデータライタにアクセスするステップをさらに含む請求項1から16のいずれか一項に記載の方法。
  18. 前記結果が、前記スマートコントラクトSCのスナップショットの状態であり、
    前記結果が、前記プラットフォームプロセッサに関連するインスタンス状態データベースに記憶される、および/または前記プラットフォームプロセッサに関連する前記インスタンス状態データベースからアクセス可能である請求項1から17のいずれか一項に記載の方法。
  19. 前記結果が、前記HTTP送信プロトコル形式に基づいて前記クライアントに提供される請求項1から18のいずれか一項に記載の方法。
  20. 前記スマートコントラクトSCの前記現在の状態ESnに関連する前記結果が、
    - 前記イベントEnが前記ブロックチェーンに送られたトランザクション識別子
    - 前記ブロックチェーンのヘッダへの前記トランザクションのマークル包含証明
    - 前記トランザクションが含められたブロックヘッダのコピー
    のうちの少なくとも1つを確認する証明書を含む請求項1から19のいずれか一項に記載の方法。
  21. 前記スマートコントラクトSCが、有限状態機械(FSM)として実装される請求項1から20のいずれか一項に記載の方法。
  22. 前記スマートコントラクトSCに関する前記イベントストリームESの各イベントに関する前記結果に基づくコピーまたは記録またはログをオフチェーンストレージリソースに記憶するステップを含む請求項1から21のいずれか一項に記載の方法。
  23. 前記APIが、ハイパーテキスト転送プロトコル(HTTP)アプリケーションプログラミングインターフェース(API)エンドポイントであり、
    前記エンドポイントが、HTTPセキュア(HTTPS)を使用して前記クライアントに提供される請求項1から22のいずれか一項に記載の方法。
  24. 前記APIが、前記プラットフォームプロセッサに関連するエイリアスであり、
    前記エイリアスが、前記プラットフォームプロセッサに固有であり、エイリアスに基づくアドレス指定サービスによって提供され、
    前記アドレス指定サービスが、定義されたまたはよく知られているロケーションからアクセス可能な機械可読リソースを有し、
    前記機械可読リソースが、前記プラットフォームプロセッサに関連する1つまたは複数の能力を含み、
    前記エイリアスが、認証のための非対称暗号鍵ペアに関連付けられる請求項1から23のいずれか一項に記載の方法。
  25. 前記クライアントからの前記要求の受信に応じて、前記方法が、前記要求に関連する前記スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび/または検証ツールを提供するステップを含む請求項1から24のいずれか一項に記載の方法。
  26. ブロックチェーンに関連するスマートコントラクトにアクセスするためのコンピュータによって実施される方法であって、
    複数のクライアントの中の所与のクライアントの1つまたは複数のプロセッサによって実施され、
    スマートコントラクトSCを実行するためのプラットフォームに関連する1つまたは複数のプロセッサに関連するアプリケーションプログラミングインターフェース(API)エンドポイントを取得または特定するステップと、
    前記スマートコントラクトSCに関連する1つまたは複数のイベントEnの要求を前記プラットフォームに送信するステップであって、前記要求が、ハイパーテキスト転送プロトコル(HTTP)送信プロトコル形式に基づいて送信される、ステップと、
    前記スマートコントラクトSCに関連するデータを処理するための1つまたは複数のソフトウェアライブラリおよび検証ツールを取得するステップと、
    要求されたイベントEnに関連するブロックチェーントランザクションの出力スクリプトに基づく結果を受信するステップであって、前記結果が、前記スマートコントラクトSCの更新された状態を表し、前記結果が、HTTP送信プロトコル形式を使用して受信される、ステップと
    を含む、方法。
  27. 前記要求が前記イベントEnに関するハッシュされたイベントデータを含むように、前記イベントEnに関するイベントデータにハッシュ関数を適用するステップを含む請求項26に記載の方法。
  28. 前記結果に基づいて、前記1つまたは複数のソフトウェアライブラリを使用して前記スマートコントラクトSCに関連するイベントストリームESを回復するステップ、
    前記1つまたは複数の検証ツールを使用して、前記スマートコントラクトの状態を検証するために、前記回復されたイベントストリームESを前記結果と比較するステップ
    をさらに含む請求項26または27に記載の方法。
  29. 前記1つまたは複数のソフトウェアライブラリが、前記プラットフォームから受信されたソフトウェア開発キット(SDK)に関連付けられる請求項26から28のいずれか一項に記載の方法。
  30. 前記クライアントが、前記プラットフォームプロセッサに関連するエイリアスに関連付けられ、
    前記エイリアスが、前記プラットフォームプロセッサに固有であり、エイリアスに基づくアドレス指定サービスによって提供され、
    前記アドレス指定サービスが、定義されたまたはよく知られているロケーションからアクセス可能な機械可読リソースを有し、
    前記機械可読リソースが、前記クライアントに関連する1つまたは複数の能力を含み、
    前記エイリアスが、認証のための非対称暗号鍵ペアに関連付けられる請求項26または27に記載の方法。
  31. プロセッサとメモリとを含むコンピューティングデバイスであって、前記メモリが、前記プロセッサによる実行の結果として、請求項1から25のいずれか一項に記載のコンピュータによって実施される方法を前記デバイスに実行させる実行可能命令を含み、
    前記コンピューティングデバイスが、プラットフォームプロセッサに関連する、コンピューティングデバイス。
  32. プロセッサとメモリとを含むコンピューティングデバイスであって、前記メモリが、前記プロセッサによる実行の結果として、請求項26から30のいずれか一項に記載のコンピュータによって実施される方法を前記デバイスに実行させる実行可能命令を含み、
    前記コンピューティングデバイスが、クライアントに関連している、コンピューティングデバイス。
  33. ワイヤレス通信ネットワークを介して少なくとも1つのクライアントに通信可能なように結合された少なくとも1つのプラットフォームプロセッサを含むコンピュータシステムであって、
    前記少なくとも1つのプラットフォームプロセッサが、前記少なくとも1つのクライアントからのHTTP要求を処理するためのアプリケーションプログラミングインターフェース(API)エンドポイントに関連付けられ、
    前記少なくとも1つのプラットフォームプロセッサが、請求項31に記載のコンピューティングデバイスに従って実装され、
    前記少なくとも1つのクライアントが、請求項32に記載のコンピューティングデバイスに従って実装され、
    前記少なくとも1つのプラットフォームプロセッサが、プラットフォームサービスの以下の構成要素、すなわち、
    スマートコントラクトストア、
    イベントストリームログ、
    インスタンス状態データベース、および
    データライタ
    のうちの1つまたは複数に前記ワイヤレス通信ネットワークを介して通信可能なように結合され、
    前記プラットフォームサービスが、複数のクライアントのためにブロックチェーンに関連する複数のサービスを提供する、コンピュータシステム。
  34. コンピュータのプロセッサによって実行された結果として、請求項1から30のいずれか一項に記載の方法を前記コンピュータに実行させる実行可能命令が記憶されたコンピュータ可読ストレージ媒体。
JP2022549739A 2020-02-19 2021-02-15 ブロックチェーンに関連するサービスのプラットフォームのための計算サービス Pending JP2023513848A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB2002285.1 2020-02-19
GBGB2002285.1A GB202002285D0 (en) 2020-02-19 2020-02-19 Computer-implemented system and method
GBGB2013929.1A GB202013929D0 (en) 2020-09-04 2020-09-04 Computer-implemented system and method
GB2013929.1 2020-09-04
PCT/IB2021/051260 WO2021165816A1 (en) 2020-02-19 2021-02-15 Compute services for a platform of services associated with a blockchain

Publications (1)

Publication Number Publication Date
JP2023513848A true JP2023513848A (ja) 2023-04-03

Family

ID=74701528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022549739A Pending JP2023513848A (ja) 2020-02-19 2021-02-15 ブロックチェーンに関連するサービスのプラットフォームのための計算サービス

Country Status (7)

Country Link
US (1) US20230095965A1 (ja)
EP (1) EP4107687A1 (ja)
JP (1) JP2023513848A (ja)
KR (1) KR20220143705A (ja)
CN (1) CN115280347A (ja)
TW (1) TW202139127A (ja)
WO (1) WO2021165816A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230072264A1 (en) * 2021-08-17 2023-03-09 Julian Coccia Method For Certification, Validation And Correlation Of Bills Of Materials In A Software Supply Chain
KR102610011B1 (ko) * 2021-10-21 2023-12-04 고려대학교 산학협력단 DApp의 스마트 컨트랙트 수수료 감소 방법, 이를 수행하기 위한 기록 매체 및 연산 서버

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333705B2 (en) * 2016-04-30 2019-06-25 Civic Technologies, Inc. Methods and apparatus for providing attestation of information using a centralized or distributed ledger

Also Published As

Publication number Publication date
CN115280347A (zh) 2022-11-01
WO2021165816A1 (en) 2021-08-26
US20230095965A1 (en) 2023-03-30
TW202139127A (zh) 2021-10-16
KR20220143705A (ko) 2022-10-25
EP4107687A1 (en) 2022-12-28

Similar Documents

Publication Publication Date Title
US11743137B2 (en) Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
US11824970B2 (en) Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules
US11899817B2 (en) Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
Prusty Building blockchain projects
US11824864B2 (en) Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11811769B2 (en) Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US20190172026A1 (en) Cross blockchain secure transactions
JP7157348B2 (ja) ブロックチェーンシステム、承認端末、スマートコントラクト登録方法、および、スマートコントラクト登録プログラム
US20230095965A1 (en) Compute services for a platform of services associated with a blockchain
US20230082545A1 (en) Event streams for a sequence of events associated with a blockchain
Bagchi Using blockchain technology and smart contracts for access management in IoT devices
Chauhan et al. Blockchain based framework for document authentication and management of daily business records
US20230119035A1 (en) Platform services verification
Pintaldi Implementation of a Blockchain-based Distributed PKI for IoT using Emercoin NVS and TPM 2.0
US20230093411A1 (en) Synchronising event streams
Saldamli et al. Identity management via blockchain
Cai et al. In-Depth Interpretation of Ethereum
EP4107689A1 (en) Platform services verification
Figueira Secure Framework for Cloud Data Sharing Based on Blockchain
Gunnarsson Skyllian: a flexible layer II solution for blockchain systems
Soares et al. Extending the Docstone to Enable a Blockchain-based Service for Customizable Assets and Blockchain Types
Adel Blockchain Land Registry
Ferretti et al. Blockchain and Smartcontracts: Fundamentals and a Decentralized Application Case-Study

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240115