JP7846691B2 - ブロックチェーントランザクションの生成と検証 - Google Patents
ブロックチェーントランザクションの生成と検証Info
- Publication number
- JP7846691B2 JP7846691B2 JP2023536523A JP2023536523A JP7846691B2 JP 7846691 B2 JP7846691 B2 JP 7846691B2 JP 2023536523 A JP2023536523 A JP 2023536523A JP 2023536523 A JP2023536523 A JP 2023536523A JP 7846691 B2 JP7846691 B2 JP 7846691B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- blockchain
- function
- functions
- script
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/311—Functional or applicative languages; Rewrite languages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Computing Systems (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Finance (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Description
図1は、ブロックチェーン150を実装するための例示的なシステム100を示している。システム100は、パケット交換ネットワーク101、通常はインターネットなどの広域インターネットワークを備え得る。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)ネットワーク106を形成するように配置され得る複数のブロックチェーンノード104を備える。図示されていないが、ブロックチェーンノード104は、ほぼ完全なグラフとして配置され得る。したがって、各ブロックチェーンノード104は、他のブロックチェーンノード104と高度に接続されている。
図2は、例示的なトランザクションプロトコルを示している。これは、UTXOベースのプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースのプロトコルを参照して説明される。しかしながら、これはすべての可能な実施形態に限定されない。UTXOベースの例示的なプロトコルはビットコインを参照して説明されているが、他の例示的なブロックチェーンネットワークにおいても同様に実装できる点に留意されたい。
<Sig PA> <PA>||[Checksig PA]
上式で、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロック解除スクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するために含まれる必要がある。実施形態では、署名されたデータは、Tx1の全体を備える(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
図1に示されるように、アリスおよびボブの各々のコンピュータ機器102a、120b上のクライアントアプリケーションは、それぞれ、追加の通信機能を備え得る。この追加の機能は、(いずれかの当事者または第三者の指示で)アリス103aがボブ103bとの別個のサイドチャネル107を確立することを可能にする。サイドチャネル107は、ブロックチェーンネットワークとは別でのデータの交換を可能にする。そのような通信は、「オフチェーン(off-chain)」通信と呼ばれることがある。たとえば、これは、当事者の一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションが(まだ)ブロックチェーンネットワーク106に登録されたり、チェーン150上に進んだりすることなく、アリスとボブとの間でトランザクション152を交換するために使用され得る。この方法でトランザクションを共有することは、「トランザクションテンプレート」の共有と呼ばれることもある。トランザクションテンプレートには、完全なトランザクションを形成するために必要な1つまたは複数の入力および/または出力が欠けている場合がある。代替的にまたは追加的に、サイドチャネル107は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
図3Aは、現在開示されている方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装形態を示している。クライアントアプリケーション105は、トランザクションエンジン401とユーザインターフェース(UI)層402を備える。トランザクションエンジン401は、トランザクション152を定式化することと、サイドチャネル301を介してトランザクションおよび/または他のデータを受信および/または送信することと、ならびに/あるいは上記で説明し、すぐにさらに詳細に説明する方式に従って、ブロックチェーンネットワーク106を通じて伝搬されるべき1つまたは複数のノード104にトランザクションを送信することとを行うためなどに、クライアント105の基礎となるトランザクション関連機能を実装するように構成される。本明細書で開示される実施形態によれば、各クライアント105のトランザクションエンジン401は、高レベルスクリプト言語でロックスクリプトを記述し、高レベルスクリプト言語と低レベルスクリプト言語との間で変換するように構成された関数403を備える。言い換えれば、高レベル言語で記述されたロックスクリプトは、低レベル言語で記述された同等のロックスクリプトにマッピングすることができる。たとえば、アリス103aは、高レベル言語を使用してコンパクトロックスクリプトを構築し得、次いで、トランザクションエンジン401が、対応する展開ロックスクリプトを生成し得る。
図4は、UTXOまたは出力ベースのモデルの例において、ネットワーク106の各ブロックチェーンノード104上で実行されるノードソフトウェア450の例を示している。別のエンティティは、ネットワーク106上でノード104として分類されずに、すなわち、ノード104に必要なアクションを実行せずに、ノードソフトウェア450を実行する可能性がある点に留意されたい。ノードソフトウェア450は、これらに限定されないが、プロトコルエンジン451と、スクリプトエンジン452と、スタック453と、アプリケーションレベル決定エンジン454と、1つまたは複数のブロックチェーン関連機能モジュール455のセットとを含み得る。各ノード104は、これらに限定されないが、コンセンサスモジュール455C(たとえば、プルーフオブワーク)、伝搬モジュール455P、および記憶モジュール455S(たとえば、データベース)の3つすべてを含む、ノードソフトウェアを実行し得る。プロトコルエンジン401は、通常、トランザクション152の異なるフィールドを認識し、ノードプロトコルに従ってそれらを処理するように構成される。別の先行するトランザクション152i(Txm-1)の出力(たとえば、UTXO)を指す入力を有するトランザクション152j(Txj)が受信されると、プロトコルエンジン451は、Txj内のロック解除スクリプトを識別し、それをスクリプトエンジン452に渡す。プロトコルエンジン451はまた、Txjの入力内のポインタに基づいて、Txiを識別し、取り出す。Txiはブロックチェーン150上で公開されてもよく、その場合、プロトコルエンジンは、ノード104に記憶されたブロックチェーン150のブロック151のコピーからTxiを取り出し得る。あるいは、Txiはブロックチェーン150上でまだ公開されていない可能性がある。その場合、プロトコルエンジン451は、ノード104によって維持される未公開トランザクションの順序付きセット154からTxiを取り出し得る。いずれにしても、スクリプトエンジン451は、Txiの参照された出力におけるロックスクリプトを識別し、これをスクリプトエンジン452に渡す。
図5は、本発明の実施形態を実装するための例示的なシステム500を示している。システム500は、1人または複数の生成当事者(すなわち、ブロックチェーントランザクションを生成する当事者)を備える。簡単にするために、2人の生成当事者、アリス103aおよびボブ103bのみが図5に示されている。生成当事者はユーザである必要はなく、代わりにマシンであってもよい点に留意されたい。システム500はまた、ブロックチェーンノード104の形態で示される検証エンティティと、ブロックチェーンネットワーク106の1つまたは複数のノードとを備える。
1.インデックスと連結されたトランザクション識別子(どのトランザクション出力が使用されるかを示す)、
2.ロック解除スクリプト、および
3.シーケンス番号。
1.作成-1つのトランザクション(作成されるトランザクション)。スクリプトは、ユーザ向け、中間レベル、または低レベルのスクリプト言語であり得る。
2.伝搬-1つのトランザクション(送信されるトランザクション)。スクリプトは、(ユーザ向け言語と比較して)ノード側におけるコンパクトさとLL言語への迅速な展開のために、中間レベル言語であり得る。
3.ストレージ-1つのトランザクション(記憶されるトランザクション)。スクリプトはコンパクトさのために中間レベル言語であり得る。
4.検証-2つのトランザクション(使用されるトランザクションはロックスクリプトを提供し、支出トランザクションはロック解除スクリプトを提供する)。作成中、伝搬中、または記憶中の検証はない。実行時、トランザクションは、コンパクト形式または展開形式、あるいは、コンパクトスクリプトのすべてではなく一部が実行前にネイティブスクリプトに変換されるハイブリッド方式でのみ実行され得る。
ユーザ向け言語は人間が読取り可能であり、開発者にとって使いやすく、拡張性があり、中間レベル言語にコンパイルすることができる。ユーザ向け言語の例を以下に提供する。しかしながら、同じ中間レベル言語にコンパイルできる、複数の異なるユーザ向け言語が存在し得る。ブロックチェーントランザクションを作成するための高レベル言語にするために、Java、JavaScript、またはPythonなどの既存の言語を適応させることもできる。
中間レベル言語は、帯域幅、ストレージ、および計算における効率を向上させるために、高レベル言語を低レベル言語(たとえば、オペコード)に接続する。以下では、この汎用中間レベル言語はメタスクリプトと呼ばれる。メタスクリプトの特徴は次のように要約することができる。
1.スペース効率-高レベル言語および低レベル言語よりもサイズがコンパクト、
2.実行可能-互換性のあるスクリプトエンジンによって直接実行することができる、
3.展開可能-低レベル言語(ネイティブスクリプト)に展開することができる、
4.決定的-同じメタスクリプトは常に同じネイティブスクリプトに展開される。
アリスは、ロックスクリプト[High-Level script B]を作成するために、ユーザ向けのレベルスクリプト言語を使用することができる。
1.ロックスクリプト[High-Level script B]は、ユーザ向けスクリプト言語で記述されたコンパクトスクリプトである。これをユーザ向けロックスクリプトと呼ぶ。
2.ユーザ向けのロックスクリプトがメタスクリプトにコンパイルされる。
3.メタスクリプトごとに、ネイティブビットコインオペコードを備え、メタスクリプトと同等のネイティブロックスクリプトがある。すなわち、同じロック解除スクリプトを実行すると、常に同じ結果が生成される。この決定論的な挙動とその等価性は、テストと検証可能な計算を通じて実現され得る。
4.ネイティブロックスクリプトは数メガバイト、またはそれ以上の大きさになる可能性があるが、そのコンパクト形式は数バイト程度に抑えることができる。サイズの大きな違いは、トランザクションを伝搬して記憶する際にビットコインノードにとって有益である。
5.署名されていないトランザクションが最初に構築される(Table 1(表2))。トランザクションに署名すると、コンパクトロックスクリプトが低レベル言語ロックスクリプトに展開される(Table 2(表3))。
a.バージョンとロックタイム、
b.ロック解除スクリプトなしの入力、および
c.コンパクト形式のロックスクリプトを有する出力。
上記のアリス103aによって作成されたトランザクションは、帯域幅を節約するためにコンパクト形式(メタスクリプト)で伝搬される。前述したように、展開ロックスクリプトと比較して、そのコンパクト形式は数桁小さくなる。これは、スクリプトのサイズが無制限で、各ブロックが数十億のトランザクション(およそ10分ごと)を含み得るビットコインSVエコシステムに特に関係する。
1.メタロックスクリプトを対応するネイティブロックスクリプトに変換し、以下を取得するために、ライブラリレジスタまたは参照テーブルを使用する。
3.同じである場合、一般的な署名検証またはスクリプト検証に進む。
4.トランザクションが有効である場合、HL使用可能ノードはトランザクションをコンパクト形式でピアに伝搬する。
ユーザ、たとえばボブ103bが、アリス103aによって作成されたトランザクションを支出しようとしていると仮定する。彼は支出トランザクションを作成する。
1.コンパイルされたロックスクリプトを取得し、ネイティブスクリプトエンジンを使用して<inputB>[ビットコインオペコードにおける展開メタスクリプトB]を実行するためにSDLを使用する
2.<inputB>[Meta Script B]を実行して、オプション1と同じ結果を取得するために、SDLを使用する。
1.エンジンに同じ入力が与えられると、SE1とSE2の両方が同じ結果を生成する、および
2.SE2はSE1よりも効率的である(同じ入力が与えられた場合、結果を生成するのにかかる時間が短くなる)。
HL使用可能ノードとして、スペースを節約するために、コンパクトロックスクリプトを使用してトランザクションを記憶することができる。一般性を失うことなく、トランザクションがtable 10(表12)のように存在すると仮定する。
[smart contract]OP_FALSE OP_RETURN TxID1-secondary>。
このセクションは、開示されたフレームワークがどのように機能するかを示す3つの例のセットを提供する。第1のセットは、最高レベル(ユーザ向け)言語から中間レベル(メタスクリプト)言語に変換する際に関数テーブルを使用することの実用性と計算効率の利点に焦点を当てる。第2のセットは、メタスクリプト言語のコンパクトさに焦点を当てている。第3のセットは、より複雑ないくつかのスクリプトについての洞察を提供する。第3のセットはまた、高レベル言語で記述されたスクリプトを低レベルのネイティブスクリプト言語に直接変換できる方法を示す。
この例は、関数テーブルを使用して、最高レベル言語で記述されたスクリプトをコンパクトメタスクリプトに変換できる方法を示している。例示的なスクリプトは、入力文字列の文字を反転する。
逆関数に「I am fish」という文字列を入力したと仮定すると、メタスクリプトは次のようになる。
メタスクリプトを展開すると、すべてのループが解かれ、ネイティブオペコードのみが許可される。例として、前の例示的なメタスクリプトに対応する次のネイティブスクリプトがある。
・文字列を反転する
この第1の例では、入力文字列内の文字も反転する。この例は、説明した関数テーブルを使用せずに同じ関数をどのように実現できるかを示している。この例では、高レベルの逆関数がメタスクリプトにコンパイルされる。たとえば、コンパイラは、関数「reverse()」を読み取り、対応するメタスクリプトをコンパイルするように構成されている。特定の例として、高レベル関数のメタスクリプトへのマッピングは、コンパイラがアクセス可能なメモリに記憶され得る。
中間レベル言語(メタスクリプト):
2(プッシュデータ)+9(データ)+6=メタスクリプトにおける17バイト
高レベル言語からコンパイルする場合、メタスクリプトは文字列を逆にするために必要なループ数をコンパイラから取得する。この場合、ループ数は文字列の長さ-1になる。
高レベル言語におけるロックスクリプト(関数):reverse()
メタスクリプト内のロックスクリプト(関数):meta_var meta_assignVar meta_var meta_loop one_split meta_var meta_loop swap_cat
ロック解除スクリプト(関数への入力)は<I am fish>8にすることができる。
この例では、関数は2つの整数の最大公約数(GCD)を見つける。
高レベル言語:
メタスクリプトにおいてメタ変数を割り当てる方法を簡単に説明した。このセクションでは、ネイティブスクリプトにおいて変数を割り当てるメカニズムを紹介する。
高レベル言語:
var=5
return var+var
5 var meta_assign var op_add
5 OP_TOALTSTACK OP_FROMALTSTACK OP_DUP OP_TOALTSTACK OP_FROMALTSTACK OP_DUP OP_TOALTSTACK OP_ADD
次の例では、HLスクリプトはLLスクリプトに直接変換され、すなわち、スクリプト言語のレベルは高レベルと低レベルの2つだけである。
GCDは、2つの整数a、bを入力として受け取り、GDC(a、b)を出力する関数である。これは、次のように説明できるユークリッドアルゴリズムを使用して実現される。
1.a=x、b=yとする
2.x、yが与えられた場合、x=yq+r、0≦r<|y|と記述するために、除算アルゴリズムを使用する
3.r=0の場合、停止してyを出力する。これはa、bのgcdである。
4.r≠0の場合、(x、y)を(y、r)に置き換える。ステップ2に進む。
スタックの初期状態:<a><b>
スタックの最終状態:<b><r>、
Altstackの初期状態:未使用
Altstackの最終状態:未使用
計算:a=qb+r、またはr=a mod b
スタックの初期状態:<a><b>//<b>はスタックの先頭である
スタックの最終状態:<q>
Altstackの初期状態:未使用
Altstackの最終状態:<d><b>//<b>はaltstackの先頭である
OP_TUCK OP_2DUP OP_MOD OP_DUP OP_TOALTSTACK OP_SWAP
OP_TOALTSTACK OP_SUB
OP_SWAP OP_DIV
HL関数qr(){TUCK 2DUP MOD DUP TAS SWAP TAS-SWAP/}
スタックの初期状態:<si-2><ti-2><si-1><ti-1><qi>//<qi>はスタックの先頭である
スタックの最終状態:<si-1><ti-1><si><ti>
Altstackの初期状態:未使用
Altstackの最終状態:未使用
OP_DUP 3 OP_PICK OP_MUL 5 OP_ROLL OP_SWAP OP_SUB OP_SWAP
2 OP_PICK OP_MUL 4 OP_ROLL OP_SWAP OP_SUB
HL関数st(){DUP 3 PICK * 5 ROLL SWAP - SWAP 2 PICK * 4 ROLL SWAP-}
HL関数st()は、以下の拡張ユークリッドアルゴリズムの計算において使用されるパラメータsとtを計算する。
この関数は<a><b>を受け取り、sn、tn gcd(a,b)を計算し、gcd(a,b)=sna+tnbである
スタックの初期状態:<a><b>//<b>はスタックの先頭であり、a>bであり、両方とも+ve整数である
スタックの最終状態:<sn><tn>gcd(a,b)//スタック先頭のgcd(a,b)
Altstackの初期状態:未使用
Altstackの最終状態:…
<a><b> FUNCTION_1
1 0 0 1 4 OP_ROLL
FUNCTION_2
OP_FROMALTSTACK OP_FROMALTSTACK OP_DUP OP_IF
FUNCTION_1 FUNCTION_2
OP_FROMALTSTACK OP_FROMALTSTACK OP_DUP OP_IF
FUNCTION_1 FUNCTION_2
OP_FROMALTSTACK OP_FROMALTSTACK OP_DUP OP_IF
FUNCTION_1 FUNCTION_2
…
…
OP_ENDIF
OP_ENDIF
OP_ENDIF
OP_DROP OP_NIP OP_NIP
HL function qr(){TUCK 2DUP MOD DUP TAS SWAP TAS - SWAP/}
HL function st(){DUP 3 PICK * 5 ROLL SWAP - SWAP 2 PICK * 4 ROLL SWAP-}
HL function EEA(a, b){
a b qr() 1 0 0 1 4 ROLL st() FAS
let l=25
loop (l) {DUP IF qr() st() FAS ENDIF}
DROP NIP NIP}
EEA (in1 , in2)
開示された技法の他の変形または使用事例は、本明細書の開示が与えられれば、当業者には明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
第1のブロックチェーントランザクションを生成するステップであって、第1のブロックチェーントランザクションが第1のコンパクトスクリプト(CS)を備え、第1のCSが、少なくとも部分的に高レベル(HL)スクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実施されるそれぞれの動作と同等の動作を実施するように構成され、第1のCSが、LLスクリプト言語で記述され、複数のLL関数を備える第1の展開スクリプト(ES)と同等の動作を実施するように構成され、第1のCSが、第1のESよりストレージサイズが小さい、ステップと、
第1のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードおよび/または第2の当事者が利用できるようにするステップと
を備える、コンピュータ実装方法。
第1のUFスクリプト(UFS)を生成するステップであって、第1のUFSが、少なくとも部分的にUFスクリプト言語で記述され、1つまたは複数のUF関数を備え、実行されると、各UF関数が、1つまたは複数のIL関数によって実施されるそれぞれの動作と同等の動作を実施するように構成される、ステップと、
第1のUFSを第1のCSに変換するステップと
を備える、ステートメント2に記載の方法。
第1のトランザクション識別子を生成するステップであって、第1のトランザクション識別子が、第1のブロックチェーントランザクションの修正バージョンに基づいて生成され、第1のブロックチェーントランザクションのこの修正バージョンが、第1のCSの代わりに第1のESを備える、ステップと、
トランザクション識別子をブロックチェーンネットワークの1つまたは複数のノードが利用できるようにするステップと
を備える、ステートメント1から9のいずれか1つに記載の方法。
第1のブロックチェーントランザクションを生成するステップと、
第1のトランザクション識別子を生成するための第1のブロックチェーントランザクションの修正バージョンを生成するために、第1のCSを第1のESに置き換えるステップと
を備える、ステートメント10に記載の方法。
第1のブロックチェーントランザクションの修正バージョンを生成するステップと、
第1のESを第1のCSに置き換えることによって、第1のブロックチェーントランザクションを生成するステップと
を備える、ステートメント3に記載の方法。
第1のブロックチェーントランザクションのバージョン番号と、
第1のブロックチェーントランザクションのロックタイムと、
第1のブロックチェーントランザクションの1つまたは複数の入力と、
ロック解除スクリプトを備えない第1のブロックチェーントランザクションの1つまたは複数の入力と、
それぞれのCSを備える第1のブロックチェーントランザクションの1つまたは複数の出力と
のうちの1つまたは複数に基づくセカンダリトランザクション識別子を備える、ステートメント1から15のいずれか1つに記載の方法。
第2のブロックチェーントランザクションを取得するステップであって、第2のブロックチェーントランザクションが、第1のロック解除スクリプトを備える第1の入力を備える、ステップと、
第2のブロックチェーントランザクションを検証するステップと
を備え、第2のブロックチェーントランザクションを検証する前記ステップが、
第1のブロックチェーントランザクションを取得するステップを備え、
a)第1のCLSを第1のELSに置き換え、次いで、第1のロック解除スクリプトを第1のELSとともに実行するステップであって、第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ、または、
b)第1のロック解除スクリプトを第1のCLSとともに実行するステップであって、第2のトランザクションが有効である条件が、前記実行が成功することである、ステップを備える、コンピュータ実装方法。
第2の候補トランザクション識別子を取得するステップと、
第2のブロックチェーントランザクションの修正バージョンを生成するステップであって、第2のブロックチェーントランザクションのこの修正バージョンでは、第2の出力が第2のCSの代わりに第2のESを備える、ステップと、
第2のトランザクション識別子を生成するステップであって、第2のトランザクション識別子が、第2のブロックチェーントランザクションの修正バージョンに基づいて生成される、ステップと、
第2の候補トランザクション識別子と第2のトランザクション識別子を比較するステップであって、第2のブロックチェーントランザクションが有効である条件が、第2の候補トランザクション識別子が第2のトランザクション識別子と一致することである、ステップと
を備える、ステートメント25から28のいずれか1つに記載の方法。
a)第1のCLSを第1のELSに置き換える前記ステップが、関数テーブルにリストされている関数マッピングに基づいている、または、
b)第1のCLSとともに第1のロック解除スクリプトを実行する前記ステップが、関数テーブルにリストされている関数マッピングに基づいている、ステートメント25から30のいずれか1つに記載の方法。
第1のブロックチェーントランザクションを取得するステップであって、第1のブロックチェーントランザクションが前のブロックチェーントランザクションの入力を参照する入力を備え、第1のブロックチェーントランザクションが第1のコンパクトスクリプト(CS)を備え、第1のCSが、HLスクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実施されるそれぞれの動作と同等の動作を実施するように構成され、第1のCSが、LLスクリプト言語で記述され、複数のLL関数を備える第1の展開スクリプト(ES)と同等の動作を実施するように構成され、第1のCSが、第1のESよりストレージサイズが小さい、ステップと、
第2のブロックチェーントランザクションの検証の一部として、
第1の候補トランザクション識別子を取得するステップと、
第1のブロックチェーントランザクションの修正バージョンを生成するステップであって、第1のブロックチェーントランザクションのこの修正バージョンが、第1のCSの代わりに第1のESを備える、ステップと、
第1のトランザクション識別子を生成するステップであって、第1のトランザクション識別子が、第1のブロックチェーントランザクションの修正バージョンに基づいて生成される、ステップと、
第1の候補トランザクション識別子と第1のトランザクション識別子とを比較するステップであって、第1のブロックチェーントランザクションが有効である条件が、第1の候補トランザクション識別子が第1のトランザクション識別子と一致することである、ステップと
を備える、コンピュータ実装方法。
HLスクリプト言語で記述されたスクリプトを実行するように構成されていないブロックチェーンネットワークの1つまたは複数のノードから、第1のブロックチェーントランザクションの要求を受信するステップと、
第1のブロックチェーントランザクションの修正バージョンをそれらの1つまたは複数のノードに送信するステップと
を備える、ステートメント39に記載の方法。
第2のブロックチェーントランザクションを取得するステップであって、第2のブロックチェーントランザクションが、第1のコンパクトロック解除スクリプト(CUS)を備える第1の入力を備え、第1のCUSが、少なくとも部分的にHLスクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実施されるそれぞれの動作と同等の動作を実施するように構成され、第1のCUSが、LLスクリプト言語で記述され、複数のLL関数を備える第1の展開ロック解除スクリプト(EUS)と同等の動作を実施するように構成され、第1のCUSが、第1のEUSよりストレージサイズが小さい、ステップと、
第2のブロックチェーントランザクションを検証するステップと
を備え、第2のブロックチェーントランザクションを検証する前記ステップが、
第1のブロックチェーントランザクションを取得するステップを備え、
a)第1のCUSを第1のEUSに置き換え、次いで、第1の出力とともに第1のEUSを実行するステップであって、第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ、または、
b)第1の出力とともに第1のCUSを実行するステップであって、第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ
を備える、コンピュータ実装方法。
a)第1のCUSを第1のEUSに置き換える前記ステップが、関数テーブルにリストされている関数マッピングに基づく、または
b)第1の出力とともに第1のCUSを実行する前記ステップが、関数テーブルにリストされている関数マッピングに基づく、ステートメント44に記載の方法。
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、メモリが、処理装置上で実行されるように構成されたコードを記憶し、コードが、処理装置上にあるときに、ステートメント1から24のいずれか1つに記載の方法を実施するように構成される、コンピュータ機器。
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、メモリが、処理装置上で実行されるように構成されたコードを記憶し、コードが、処理装置上にあるときに、ステートメント25から45のいずれか1つに記載の方法を実施するように構成される、コンピュータ機器。
101 パケット交換ネットワーク
102 コンピュータ機器
102a コンピューティングデバイス
102a コンピュータ機器
102b コンピュータ機器
103 当事者
103a ユーザ
103a アリス
103a 第1の当事者
103b 第2の当事者
103b ボブ
104 ビットコインノード
104 ブロックチェーンノード
105 クライアント
105 クライアントアプリケーション
106 ピアツーピア(P2P)ネットワーク
106 ブロックチェーンネットワーク
107 サイドチャネル
150 ブロックチェーン
151 データブロック
151 新しいブロック
151n-1 ブロック
152 トランザクション
152i 先行するトランザクション
152j 現在のトランザクション
153 ジェネシスブロック(Gb)
154 順序付きセット(または「プール」)
155 ブロックポインタ
201 ヘッダ
202 入力
202 入力フィールド
203 出力
203 出力フィールド
401 トランザクションエンジン
402 ユーザインターフェース(UI)層
403 関数
450 ノードソフトウェア
451 プロトコルエンジン
452 ノードのスクリプトエンジン
453 スタック
454 アプリケーションレベル決定エンジン
455 ブロックチェーン関連機能モジュール
455 関数
455C コンセンサスモジュール
455P 伝搬モジュール
455S 記憶モジュール
500 ユーザインターフェース(UI)
500 システム
501 UI要素
501 ユーザ選択可能な要素
502 UI要素
502 データ入力フィールド
503 UI要素
503 情報要素
Claims (49)
- ブロックチェーントランザクションを生成するコンピュータ実装方法であって、第1の当事者によって実行され、
第1のブロックチェーントランザクションを生成するステップであって、前記第1のブロックチェーントランザクションが第1のコンパクトスクリプト(CS)を備え、前記第1のCSが、少なくとも部分的に高レベル(HL)スクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実行されるそれぞれの動作と同等の動作を実行するように構成され、前記第1のCSが、第1の展開スクリプト(ES)と同等の動作を実行するように構成され、前記第1のESが、前記LLスクリプト言語で記述され、複数のLL関数を備え、前記第1のCSが、前記第1のESよりストレージサイズが小さい、ステップと、
前記第1のブロックチェーントランザクションをブロックチェーンネットワークの1つまたは複数のノードおよび/または第2の当事者が利用できるようにするステップと
を備える、コンピュータ実装方法。 - 前記HLスクリプト言語が、ユーザ向け(UF)スクリプト言語と前記LLスクリプト言語との間の中間レベル(IL)スクリプト言語であり、前記HL関数がIL関数である、請求項1に記載の方法。
- 前記第1のブロックチェーントランザクションを生成するステップが、
第1のUFスクリプト(UFS)を生成するステップであって、前記第1のUFSが、少なくとも部分的に前記UFスクリプト言語で記述され、1つまたは複数のUF関数を備え、実行されると、各UF関数が、1つまたは複数のIL関数によって実行されるそれぞれの動作と同等の動作を実行するように構成される、ステップと、
前記第1のUFSを前記第1のCSに変換するステップと
を備える、請求項2に記載の方法。 - 関数テーブルが関数マッピングのリストを備え、各関数マッピングが、1つまたは複数の他のIL関数および/あるいは1つまたは複数のLL関数のセットにマッピングされたそれぞれのIL関数を備え、前記第1のUFSから前記第1のCSに変換する前記ステップが、前記関数テーブルにリストされている前記関数マッピングに基づく、請求項3に記載の方法。
- 前記関数テーブルが、それぞれがそれぞれのIL関数を識別する1つまたは複数の関数識別子を備え、前記第1のCSが、1つまたは複数の第1のデータペアを備え、各第1のデータペアが、それぞれのIL関数識別子および呼出し関数を備え、実行されると、前記呼出し関数が、前記それぞれのIL関数識別子によって識別される前記IL関数にマッピングされた1つまたは複数の他のIL関数および/あるいは1つまたは複数のLL関数の前記セットを実行するように構成される、請求項4に記載の方法。
- 前記関数テーブルの少なくとも一部が前記第1の当事者によって作成され、前記方法が前記関数テーブルの前記少なくとも一部を、ブロックチェーンネットワークの1つまたは複数のノードおよび/または前記第2の当事者が利用できるようにするステップを備える、請求項5に記載の方法。
- 前記関数テーブルの少なくとも一部が、前記第1の当事者以外の当事者によって作成され、前記方法が、前記関数テーブルの前記少なくとも一部を取得するステップを備える、請求項4から6のいずれか一項に記載の方法。
- 前記関数テーブルの前記少なくとも一部がブロックチェーンノードによって作成され、取得する前記ステップが前記関数テーブルの前記少なくとも一部を前記ブロックチェーンノードから受信するステップを備える、請求項7に記載の方法。
- 変数テーブルが1つまたは複数の変数識別子を備え、各変数識別子に関連付けて変数を記憶するように構成され、前記第1のCSが、1つまたは複数の第2のデータペアを備え、各第2のデータペアが、それぞれの変数識別子と、読取り関数または書込み関数のいずれかを備え、実行されると、前記読取り関数が、前記それぞれの変数識別子に関連付けて記憶されている前記変数テーブルから変数を読み取るように構成されており、実行されると、前記書込み関数が、前記それぞれの変数識別子に関連付けて記憶するために、前記第1のCSの実行中に生成された変数を前記変数テーブルに書き込むように構成されている、請求項3から8のいずれか一項に記載の方法。
- 第1のトランザクション識別子を生成するステップであって、前記第1のトランザクション識別子が、前記第1のブロックチェーントランザクションの修正バージョンに基づいて生成され、前記第1のブロックチェーントランザクションのこの修正バージョンが、前記第1のCSの代わりに前記第1のESを備える、ステップと、
前記トランザクション識別子を前記ブロックチェーンネットワークの1つまたは複数のノードが利用できるようにするステップと
を備える、請求項1から9のいずれか一項に記載の方法。 - 前記第1のトランザクション識別子を生成する前記ステップが、
前記第1のブロックチェーントランザクションを生成するステップと、
前記第1のトランザクション識別子を生成するための前記第1のブロックチェーントランザクションの前記修正バージョンを生成するために、前記第1のCSを前記第1のESに置き換えるステップと
を備える、請求項10に記載の方法。 - 前記第1のブロックチェーントランザクションを前記ブロックチェーンネットワークの前記1つまたは複数のノードが利用できるようにする前記ステップの前に、前記第1のESを前記第1のCSに置き換えるステップを備える、請求項11に記載の方法。
- 前記第1のブロックチェーントランザクションを生成する前記ステップが、
前記第1のブロックチェーントランザクションの前記修正バージョンを生成するステップと、
前記第1のESを前記第1のCSに置き換えることによって、前記第1のブロックチェーントランザクションを生成するステップと
を備える、請求項11に記載の方法。 - 前記第1のブロックチェーントランザクションが、前記第1のトランザクション識別子とともに前記ブロックチェーンネットワークの前記1つまたは複数のノードで利用可能になる、請求項10から13のいずれか一項に記載の方法。
- 前記第1のブロックチェーントランザクションが第1の入力を備え、前記第1の入力が前記第1のブロックチェーントランザクションの前記修正バージョンに基づいて生成された署名を備える、請求項11に記載の方法。
- 前記第1のブロックチェーントランザクションが、以下のフィールド、
前記第1のブロックチェーントランザクションのバージョン番号と、
前記第1のブロックチェーントランザクションのロックタイムと、
前記第1のブロックチェーントランザクションの1つまたは複数の入力と、
ロック解除スクリプトを備えない前記第1のブロックチェーントランザクションの1つまたは複数の入力と、
それぞれのCSを備える前記第1のブロックチェーントランザクションの1つまたは複数の出力と
のうちの1つまたは複数に基づくセカンダリトランザクション識別子を備える、請求項1から15のいずれか一項に記載の方法。 - 署名の基礎となる前記第1のブロックチェーントランザクションの前記修正バージョンが、セカンダリトランザクション識別子を備える出力を備える、請求項11または12に記載の方法。
- 1つまたは複数のブロックチェーンクライアントアプリケーションが前記第1のブロックチェーントランザクションを利用できるようにするステップを備える、請求項1から17のいずれか一項に記載の方法。
- 前記第1のブロックチェーントランザクションを前記第1の当事者によって動作されるコンピューティング機器のメモリに記憶するステップを備える、請求項1から18のいずれか一項に記載の方法。
- 前記HL関数のうちの少なくとも1つによって実行される演算が、複数の前記LL関数によって実行される演算と同等である、請求項1から19のいずれか一項に記載の方法。
- 前記第1のCSが第1のコンパクトロックスクリプト(CLS)であり、前記第1のESが第1の展開ロックスクリプト(ELS)である、請求項1から20のいずれか一項に記載の方法。
- 第1のUFスクリプトが、第1のユーザ向けロックスクリプト(UFLS)である、請求項2または21に記載の方法。
- 前記第1のCSが第1のコンパクトロック解除スクリプト(CLS)であり、前記第1のESが第1の展開ロック解除スクリプト(ELS)である、請求項1から20のいずれか一項に記載の方法。
- 第1のUFスクリプトが、第1のユーザ向けロック解除スクリプト(UFLS)である、請求項2または23に記載の方法。
- コンピュータ実装方法であって、
ブロックチェーントランザクションを検証するコンピュータ実装方法であって、前記方法が、ブロックチェーンネットワークのノードによって実行され、前記ノードが、高レベル(HL)スクリプト言語で記述されたスクリプトを実行するように構成され、前記ブロックチェーンが、第1のブロックチェーントランザクションを備え、前記第1のブロックチェーントランザクションが、第1のコンパクトロックスクリプト(CLS)を備える第1の出力を備え、前記第1のCLSが、少なくとも部分的に前記HLスクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実行されるそれぞれの動作と同等の動作を実行するように構成され、前記第1のCLSが、第1の展開ロックスクリプト(ELS)と同等の動作を実行するように構成され、前記第1のELSが、前記LLスクリプト言語で記述され、複数のLL関数を備え、前記第1のCLSが、前記第1のELSよりストレージサイズが小さく、前記方法がブロックチェーンノードによって実行され、
第2のブロックチェーントランザクションを取得するステップであって、前記第2のブロックチェーントランザクションが、第1のロック解除スクリプトを備える第1の入力を備える、ステップと、
前記第2のブロックチェーントランザクションを検証するステップと
を備え、前記第2のブロックチェーントランザクションを検証する前記ステップが、
前記第1のブロックチェーントランザクションを取得するステップを備え、
a)前記第1のCLSを前記第1のELSに置き換え、次いで、前記第1のロック解除スクリプトを前記第1のELSとともに実行するステップであって、前記第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ、または、
b)前記第1のロック解除スクリプトを前記第1のCLSとともに実行するステップであって、前記第2のトランザクションが有効である条件が、前記実行が成功することである、ステップを備える、コンピュータ実装方法。 - 前記第2のブロックチェーントランザクションが有効であることを条件として、前記第2のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数の他のノードに送信する、および/あるいは前記第1のブロックチェーントランザクションを前記ノードのメモリに記憶するステップを備える、請求項25に記載の方法。
- 前記第2のブロックチェーントランザクションが第2の当事者によって生成され、前記第2のブロックチェーントランザクションを取得する前記ステップが、前記第2の当事者から前記第2のブロックチェーントランザクションを受信するステップを備える、請求項25または26に記載の方法。
- 前記ノードのメモリから前記第1のブロックチェーントランザクションを取得するステップを備える、請求項24から26のいずれか一項に記載の方法。
- 前記第2のブロックチェーントランザクションが第2のCLSを備える第2の出力を備え、前記第2のCLSが前記HLスクリプト言語で記述され、前記第2のCLSが前記LLスクリプト言語で記述された第2のELSと同等の動作を実行するように構成され、前記第2のCLSが前記第2のELSよりストレージサイズが小さく、前記第2のブロックチェーントランザクションを検証するステップが、
第2の候補トランザクション識別子を取得するステップと、
前記第2のブロックチェーントランザクションの修正バージョンを生成するステップであって、前記第2のブロックチェーントランザクションのこの修正バージョンでは、前記第2の出力が前記第2のCSの代わりに前記第2のESを備える、ステップと、
第2のトランザクション識別子を生成するステップであって、前記第2のトランザクション識別子が、前記第2のブロックチェーントランザクションの前記修正バージョンに基づいて生成される、ステップと、
前記第2の候補トランザクション識別子と前記第2のトランザクション識別子を比較するステップであって、前記第2のブロックチェーントランザクションが有効である条件が、前記第2の候補トランザクション識別子が前記第2のトランザクション識別子と一致することである、ステップと
を備える、請求項25から28のいずれか一項に記載の方法。 - 前記第1のCLSまたは前記第1のELSとともに前記第1のロック解除スクリプトを実行する前記ステップの前に、前記第2の候補トランザクション識別子と前記第2のトランザクション識別子との前記比較を実行するステップを備える、請求項29に記載の方法。
- 前記HLスクリプト言語が、ユーザ向け(UF)スクリプト言語と前記LLスクリプト言語との間の中間レベル(IL)スクリプト言語であり、前記HL関数がIL関数であり、関数テーブルが関数マッピングのリストを備え、各関数マッピングが、1つまたは複数の他のIL関数および/あるいは1つまたは複数のLL関数のセットにマッピングされたそれぞれのIL関数を備え、
a)前記第1のCLSを前記第1のELSに置き換える前記ステップが、前記関数テーブルにリストされている前記関数マッピングに基づいている、または、
b)前記第1のCLSとともに前記第1のロック解除スクリプトを実行する前記ステップが、前記関数テーブルにリストされている前記関数マッピングに基づいている、請求項25から30のいずれか一項に記載の方法。 - 関数テーブルが、それぞれがそれぞれのIL関数を識別する1つまたは複数の関数識別子を備え、前記第1のCSが、1つまたは複数の第1のデータペアを備え、各第1のデータペアが、それぞれのIL関数識別子および呼出し関数を備え、実行されると、前記呼出し関数が、前記それぞれのIL関数識別子によって識別される前記IL関数にマッピングされた1つまたは複数の他のIL関数および/あるいは前記1つまたは複数のLL関数のセットを実行するように構成される、請求項25から31のいずれか一項に記載の方法。
- 前記関数テーブルの少なくとも一部が第1の当事者によって作成され、前記方法が、前記関数テーブルの前記少なくとも一部を前記第1の当事者から受信するステップを備える、請求項31または32に記載の方法。
- 異なる当事者から前記関数テーブルの異なる部分を受信するステップを備える、請求項31から33のいずれか一項に記載の方法。
- 前記関数テーブルの少なくとも一部を作成するステップを備える、請求項31または請求項31から34のいずれか一項に記載の方法。
- 変数テーブルが1つまたは複数の変数識別子を備え、各変数識別子に関連付けて変数を記憶するように構成され、前記第1のCSが、1つまたは複数の第2のデータペアを備え、各第2のデータペアが、それぞれの変数識別子と、読取り関数または書込み関数のいずれかを備え、実行されると、前記読取り関数が、前記それぞれの変数識別子に関連付けて記憶されている前記変数テーブルから変数を読み取るように構成されており、実行されると、前記書込み関数が、前記それぞれの変数識別子に関連付けて記憶するために、前記第1のCSの実行中に生成された変数を前記変数テーブルに書き込むように構成されている、請求項25から35のいずれか一項に記載の方法。
- ブロックチェーントランザクションを検証するコンピュータ実装方法であって、前記方法がブロックチェーンネットワークのノードによって実行され、前記ノードが高レベル(HL)スクリプト言語で記述されたスクリプトを実行するように構成され、前記方法がブロックチェーンノードによって実行され、
第1のブロックチェーントランザクションを取得するステップであって、前記第1のブロックチェーントランザクションが前のブロックチェーントランザクションの入力を参照する入力を備え、前記第1のブロックチェーントランザクションが第1のコンパクトスクリプト(CS)を備え、前記第1のCSが、前記HLスクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実行されるそれぞれの動作と同等の動作を実行するように構成され、前記第1のCSが、第1の展開スクリプト(ES)と同等の動作を実行するように構成され、前記第1のESが、前記LLスクリプト言語で記述され、複数のLL関数を備え、前記第1のCSが、前記第1のESよりストレージサイズが小さい、ステップと、
第2のブロックチェーントランザクションの検証の一部として、
第1の候補トランザクション識別子を取得するステップと、
前記第1のブロックチェーントランザクションの修正バージョンを生成するステップであって、前記第1のブロックチェーントランザクションのこの修正バージョンが、前記第1のCSの代わりに前記第1のESを備える、ステップと、
第1のトランザクション識別子を生成するステップであって、前記第1のトランザクション識別子が、前記第1のブロックチェーントランザクションの前記修正バージョンに基づいて生成される、ステップと、
前記第1の候補トランザクション識別子と前記第1のトランザクション識別子とを比較するステップであって、前記第1のブロックチェーントランザクションが有効である条件が、前記第1の候補トランザクション識別子が前記第1のトランザクション識別子と一致することである、ステップと
を備える、コンピュータ実装方法。 - 前記第1の候補トランザクション識別子が前記第1のトランザクション識別子と一致することを条件として、前記ノードによって動作されるブロックチェーンプロトコルに従って前記第1のブロックチェーントランザクションの検証に進めるステップを備える、請求項37に記載の方法。
- 前記第1のブロックチェーントランザクションが前記ブロックチェーンプロトコルに従って有効であることを条件として、前記第1のブロックチェーントランザクションを前記ブロックチェーンネットワークの1つまたは複数の他のノードに送信する、および/または前記第1のブロックチェーントランザクションを前記ノードのメモリに記憶するステップを備える、請求項38に記載の方法。
- 前記HLスクリプト言語で記述されたスクリプトを実行するように構成されていない前記ブロックチェーンネットワークの1つまたは複数のノードから、前記第1のブロックチェーントランザクションの要求を受信するステップと、
前記第1のブロックチェーントランザクションの前記修正バージョンをそれらの1つまたは複数のノードに送信するステップと
を備える、請求項39に記載の方法。 - 前記第1のブロックチェーントランザクションの前記修正バージョンを生成するステップが、前記第1のCSを前記第1のESに置き換えるステップを備える、請求項37から40のいずれか一項に記載の方法。
- 前記第1のブロックチェーントランザクションが第1の当事者によって生成され、前記第1のブロックチェーントランザクションを取得する前記ステップが、前記第1の当事者から前記第1のブロックチェーントランザクションを受信するステップを備える、請求項37から41のいずれか一項に記載の方法。
- 前記第1の候補トランザクション識別子を取得する前記ステップが、前記第1の当事者から前記第1の候補トランザクション識別子を受信するステップを備える、請求項42に記載の方法。
- ブロックチェーントランザクションを検証するコンピュータ実装方法であって、前記方法が、ブロックチェーンネットワークのノードによって実行され、前記ノードが、高レベル(HL)スクリプト言語で記述されたスクリプトを実行するように構成され、前記ブロックチェーンが、第1のブロックチェーントランザクションを備え、前記第1のブロックチェーントランザクションが第1の出力を備え、前記方法が、
第2のブロックチェーントランザクションを取得するステップであって、前記第2のブロックチェーントランザクションが、第1のコンパクトロック解除スクリプト(CUS)を備える第1の入力を備え、前記第1のCUSが、少なくとも部分的に前記HLスクリプト言語で記述され、1つまたは複数のHL関数を備え、実行されると、各HL関数が、低レベル(LL)スクリプト言語の1つまたは複数のLL関数によって実行されるそれぞれの動作と同等の動作を実行するように構成され、前記第1のCUSが、第1の展開ロック解除スクリプト(EUS)と同等の動作を実行するように構成され、前記第1のEUSが、前記LLスクリプト言語で記述され、複数のLL関数を備え、前記第1のCUSが、前記第1のEUSよりストレージサイズが小さい、ステップと、
前記第2のブロックチェーントランザクションを検証するステップと
を備え、前記第2のブロックチェーントランザクションを検証する前記ステップが、
前記第1のブロックチェーントランザクションを取得するステップを備え、
a)前記第1のCUSを前記第1のEUSに置き換え、次いで、前記第1の出力とともに前記第1のEUSを実行するステップであって、前記第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ、または、
b)前記第1の出力とともに前記第1のCUSを実行するステップであって、前記第2のトランザクションが有効である条件が、前記実行が成功することである、ステップ
を備える、コンピュータ実装方法。 - 前記HLスクリプト言語が、ユーザ向け(UF)スクリプト言語と前記LLスクリプト言語との間の中間レベル(IL)スクリプト言語であり、前記HL関数がIL関数であり、関数テーブルが関数マッピングのリストを備え、各関数マッピングが、1つまたは複数の他のIL関数および/あるいは1つまたは複数のLL関数のセットにマッピングされたそれぞれのIL関数を備え、
a)前記第1のCUSを前記第1のEUSに置き換える前記ステップが、前記関数テーブルにリストされている前記関数マッピングに基づく、または
b)前記第1の出力とともに前記第1のCUSを実行する前記ステップが、前記関数テーブルにリストされている前記関数マッピングに基づく、請求項44に記載の方法。 - 1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上にあるときに、請求項1から24のいずれか一項に記載の方法を実行するように構成される、コンピュータ機器。 - コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項1から24のいずれか一項に記載の方法を実行するように構成される、コンピュータプログラム。
- 1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上にあるときに、請求項25から45のいずれか一項に記載の方法を実行するように構成される、コンピュータ機器。 - コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項25から45のいずれか一項に記載の方法を実行するように構成される、コンピュータプログラム。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB2019748.9 | 2020-12-15 | ||
| GB2019748.9A GB2602010A (en) | 2020-12-15 | 2020-12-15 | Generating and validating blockchain transactions |
| PCT/EP2021/081703 WO2022128285A1 (en) | 2020-12-15 | 2021-11-15 | Generating and validating blockchain transactions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2023554417A JP2023554417A (ja) | 2023-12-27 |
| JP7846691B2 true JP7846691B2 (ja) | 2026-04-15 |
Family
ID=74188884
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023536523A Active JP7846691B2 (ja) | 2020-12-15 | 2021-11-15 | ブロックチェーントランザクションの生成と検証 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US20240103815A1 (ja) |
| EP (1) | EP4264879A1 (ja) |
| JP (1) | JP7846691B2 (ja) |
| KR (1) | KR20230121100A (ja) |
| CN (1) | CN116830085A (ja) |
| GB (1) | GB2602010A (ja) |
| TW (1) | TW202226019A (ja) |
| WO (1) | WO2022128285A1 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113469690B (zh) * | 2021-07-23 | 2024-03-26 | 佳乔(深圳)投资有限公司 | 一种基于区块链的交易结算方法 |
| TWI815678B (zh) * | 2022-09-27 | 2023-09-11 | 中華電信股份有限公司 | 一種具有最佳化記帳分配之區塊鏈授權系統、方法及其電腦可讀媒介 |
| TWI849607B (zh) * | 2022-12-05 | 2024-07-21 | 兆豐國際商業銀行股份有限公司 | 資料共享系統以及資料共享方法 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2019008532A1 (en) | 2017-07-07 | 2019-01-10 | nChain Holdings Limited | METHOD FOR COMPILING HIGH-LEVEL SCRIPT LANGUAGE WITH BLOCK CHAIN NATIVE SCRIPT LANGUAGE |
| WO2019034959A1 (en) | 2017-08-15 | 2019-02-21 | nChain Holdings Limited | METHODS AND SYSTEMS FOR OCTETS INTERPRETATION BASED ON SCRIPT IMPLEMENTED BY BLOCK CHAIN |
| WO2019116184A1 (en) | 2017-12-13 | 2019-06-20 | nChain Holdings Limited | Blockchain-implemented systems and methods for concurrent bytecode interpretation |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102738013B1 (ko) * | 2017-11-09 | 2024-12-05 | 엔체인 홀딩스 리미티드 | 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템 |
| GB201913143D0 (en) * | 2019-09-12 | 2019-10-30 | Nchain Holdings Ltd | Running a program from a blockchain |
-
2020
- 2020-12-15 GB GB2019748.9A patent/GB2602010A/en not_active Withdrawn
-
2021
- 2021-11-15 EP EP21814756.9A patent/EP4264879A1/en active Pending
- 2021-11-15 JP JP2023536523A patent/JP7846691B2/ja active Active
- 2021-11-15 US US18/266,247 patent/US20240103815A1/en active Pending
- 2021-11-15 CN CN202180084467.7A patent/CN116830085A/zh active Pending
- 2021-11-15 KR KR1020237023577A patent/KR20230121100A/ko active Pending
- 2021-11-15 WO PCT/EP2021/081703 patent/WO2022128285A1/en not_active Ceased
- 2021-11-18 TW TW110142988A patent/TW202226019A/zh unknown
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2019008532A1 (en) | 2017-07-07 | 2019-01-10 | nChain Holdings Limited | METHOD FOR COMPILING HIGH-LEVEL SCRIPT LANGUAGE WITH BLOCK CHAIN NATIVE SCRIPT LANGUAGE |
| WO2019034959A1 (en) | 2017-08-15 | 2019-02-21 | nChain Holdings Limited | METHODS AND SYSTEMS FOR OCTETS INTERPRETATION BASED ON SCRIPT IMPLEMENTED BY BLOCK CHAIN |
| WO2019116184A1 (en) | 2017-12-13 | 2019-06-20 | nChain Holdings Limited | Blockchain-implemented systems and methods for concurrent bytecode interpretation |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116830085A (zh) | 2023-09-29 |
| TW202226019A (zh) | 2022-07-01 |
| GB2602010A (en) | 2022-06-22 |
| EP4264879A1 (en) | 2023-10-25 |
| KR20230121100A (ko) | 2023-08-17 |
| GB202019748D0 (en) | 2021-01-27 |
| JP2023554417A (ja) | 2023-12-27 |
| WO2022128285A1 (en) | 2022-06-23 |
| US20240103815A1 (en) | 2024-03-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7743451B2 (ja) | ブロックチェーンネットワークにおけるデータを妥当性確認する方法及び装置 | |
| JP7846691B2 (ja) | ブロックチェーントランザクションの生成と検証 | |
| JP2024518079A (ja) | マルチパーティブロックチェーンアドレス方式 | |
| JP2024524652A (ja) | ブロックチェーン・ブロック及び存在証明 | |
| JP2024524683A (ja) | ブロックチェーンブロックおよびプルーフオブイグジスタンス | |
| JP2025516200A (ja) | コンパクトスクリプトを通信するためのプロトコル | |
| US20250088370A1 (en) | Enforcing conditions on blockchain transactions | |
| JP2024524687A (ja) | ブロックチェーンブロックおよびプルーフオブイグジスタンス | |
| JP2025516201A (ja) | コンパクトスクリプトトランザクションのメッセージングプロトコル | |
| US12483402B2 (en) | Enforcing conditions on blockchain transactions | |
| JP2024516895A (ja) | マルチパーティブロックチェーンアドレス方式 | |
| JP2024516894A (ja) | マルチパーティブロックチェーンアドレス方式 | |
| JP2024524689A (ja) | ブロックチェーンブロックおよびプルーフオブイグジスタンス |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20241015 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20251209 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20260226 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20260310 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20260403 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7846691 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |