JP7317722B2 - ブロックチェーンコンパイラ - Google Patents
ブロックチェーンコンパイラ Download PDFInfo
- Publication number
- JP7317722B2 JP7317722B2 JP2019569887A JP2019569887A JP7317722B2 JP 7317722 B2 JP7317722 B2 JP 7317722B2 JP 2019569887 A JP2019569887 A JP 2019569887A JP 2019569887 A JP2019569887 A JP 2019569887A JP 7317722 B2 JP7317722 B2 JP 7317722B2
- Authority
- JP
- Japan
- Prior art keywords
- blockchain
- script
- stack
- hll
- source code
- 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
- 238000013515 script Methods 0.000 claims description 152
- 238000000034 method Methods 0.000 claims description 58
- 230000015654 memory Effects 0.000 claims description 31
- 230000003068 static effect Effects 0.000 claims description 12
- 238000005457 optimization Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 25
- 238000012360 testing method Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 20
- 230000006399 behavior Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000005065 mining Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 102100029095 Exportin-1 Human genes 0.000 description 3
- 102100029091 Exportin-2 Human genes 0.000 description 3
- 101710147878 Exportin-2 Proteins 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 108700002148 exportin 1 Proteins 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 101100261990 Candida albicans (strain SC5314 / ATCC MYA-2876) TRY5 gene Proteins 0.000 description 2
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 101000655897 Homo sapiens Serine protease 1 Proteins 0.000 description 2
- 101000848014 Homo sapiens Trypsin-2 Proteins 0.000 description 2
- 101000847952 Homo sapiens Trypsin-3 Proteins 0.000 description 2
- 102100031050 Serine protease 58 Human genes 0.000 description 2
- 102100034392 Trypsin-2 Human genes 0.000 description 2
- 102100034396 Trypsin-3 Human genes 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 206010011878 Deafness Diseases 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/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/3297—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 time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Stored Programmes (AREA)
- Document Processing Apparatus (AREA)
Description
Initiate;
Declare;
Increment;
IF;
While;
Populate;
Monus;
Reset;
Rawscript;
Abort;
Retrieve
Hash, hash160,又はハッシュ演算又はその変形。
以下では、私達は、参照を容易にするために、最も広く知られ採用されているので、Bitcoinプロトコル、ブロックチェーン、ネットワーク又はスクリプト言語を参照することがある。しかしながら、本発明は、Bitcoin関連ブロックチェーンと共に使用されることに限定されず、他のブロックチェーン技術が本開示の範囲に含まれる。
・カスタマイズされたオペコード(以後、これをCOP_CODEと呼ぶ)、
・高レベル言語(HLL)構成。
OP_SUB
OP_0
OP_MAX
本章は、以下で本開示に従い適用されてよい規格を、カスタマイズOP_CODE(COP_CODE)のスクリプトプリミティブに関連して記載する。COP_CODEは、通常のオペコードと同様の所与のフォーマットであり、同じように動作する。つまり、Script(及び/又はコンパイラ)のライタは、オペコードを従来使用するのと同じ方法で、プリミティブを使用する。Bitcoinオペコードのリストは、Bitcoin wikiにある。https://en.bitcoin.it/wiki/Script.
●命名の慣例
スクリプトプリミティブは、ここでBitcoin Scriptオペコードと同様の方法で以下の通り命名される。
COP_xxx
ここで、「xxx」は関数の省略表現である。例えば、乗算関数は、COP_MULTと命名され得る。更にオペコードと同様に、関数が、計算で使用される特定数のパラメータ又は特定数値を有する場合、名称はその数を組み込んでよい。例えば、オペコード「OP_2DROP」は、「上位2個のスタックアイテムを除去する」を意味し、一方で「OP_1ADD」は「1がインプットに加算される」を意味する。したがって、COP_2MULTは具体的に「インプットが2で乗算される」を意味する。
●実行前の検証
特定数のインプット又は特定のインプットフォーマットが期待される場合には、プリミティブは、機能ロジックを実行する前にチェックを実行し、インプットが期待と一致しない場合に異常終了する(トランザクションを無効としてマークする)。有利なことに、これは、関数が不正又は虚偽であるかも知れないアウトプットを実行し提供することを防ぐ。例えば、特定のプリミティブが正の数値であるインプットのみを演算することを目的とするが、それにも拘わらず負の数値に対してエラー無しに実行する場合、結果は「有効なトランザクション」になり得るが、予期しない又は不正な結果を伴う。
これらは、本開示に従うコンパイラが認識でき及びBitcoinスクリプトに変換できる関数又は文である。総合して、これらは、プログラマに馴染みのある構文を用いる高レベルプログラミング言語を構成する。馴染みのある構成(例えばIF-ELSE、CASE、WHILEループ、等)と同様に、Bitcoinトランザクションが動作するために、HLLに非常に特有の馴染みのない構成もある。例えば、INITIATE構成は、主スタックに自動的にプッシュされるデータインプットの数が(予約ワードNUM_INPUTSに割り当てられた)メモリ割り当ての中で最初の定数として保存されることを保証するための非常に特有の機能である。実施形態では、INITIATE構成は、HLLプログラムの中の最初の文であり得、DECLARE構成(これは、定数及び変数のためにメモリ割り当てを実行する)はHLLプログラムの中の2番目の文であり得る。
<HLL構成:WHILEループ>
●説明
コードブロック(又はcode-block、標準的にループ本体と呼ばれる)は、指定された条件が真である限り、最大反復回数まで、繰り返し実行される。最大反復回数は、コンパイルのときに知られており及び指定されなければならない。ループは、「ループを展開する」として知られる技術によりエミュレートされる。これは、コードブロックの機能(演算のシーケンス)を表すオペコードのシーケンスが、指定された最大反復回数まで複製されることを意味する。コードブロックの各複製されたオペコードのシーケンスの前にあるIF文は、コードブロックのオペコードのシーケンスが実行されるかどうかを決定する。IF条件は、ループの始めに(つまり、コードブロックのオペコードのシーケンスの最初の実行の前に)チェックされる。
Iterations:
正整数
コードブロック(Code-Block)が実行され得る最大回数。コンパイラは、この回数だけCode-Blockを生成するので、この値を知る必要がある。これは、ハードコードされ得る、又はDECLARE文の中にある定数を参照し得る。
Condition:
真(TRUE)又は偽(FALSE)に分けられる評価可能な表現。
合成条件であってよい。つまり、AND、OR、等(どちらでもコンパイラにより現在認識されている)を用いる。
構文チェックを実行する。
反復(Iterations)が任意の制約(例えば、所定範囲に含まれる)を満たすことをチェックする。
条件(Condition)内の表現が評価可能であることをチェックする。
表現内の全ての定数/変数は、メモリ割り当て(DECLARE)リスト内に存在する。
表現内で使用される全ての演算子が現在許可されていることをチェックする(=、<、>、等)。
合成表現が任意の制約を満たすことをチェックする(例えば、AND、OR、等)。
Code-Blockの機能を「Iterations」回だけ複製する。
START OF REPLICATED CODE(複製したコードの開始)
条件(Condition)を解決する(つまり、実行が真又は偽をスタックの一番上に残す)1つ以上のオペコードを記述する。
END OF REPLICATED CODE(複製されたコードの終了)
●説明:
実施形態において、これは、任意のHLLプログラムの必須の最初の文である。
トランザクション使用者により供給されるスクリプト実行の最初の部分(つまり「scriptsig’」)は、アンロックスクリプトの制御外である。これは、通常、スタックにプッシュされるデータで構成される。INITIATE構成の目的は、プログラマがこのインプット(最も可能性の高いのは、インプットがスクリプトの残りの部分のために必要か否か)を管理できるようにすることである。
この構成は、予約ワードNUM_INPUTS(スタックにプッシュされる使用者の供給したインプットの中のアイテム数である)に「値を割り当てる」。最初のOP_CODEは常にOP_DEPTHである。その結果、スタックの一番上(この時点で)は、スタックにプッシュされたデータインプットの数を含む。スタック内のこの位置は、固定され、コンパイラにコンパイルのときに知られているが、実際の値はコンパイルのときに分からない。
●構文:
INITIATE
●コンパイラの動作:
WriteOP_DEPTH OP_DEPTH /*これはOP_DEPTHをNUM_INPUTSの値に設定する。
●説明:
実施形態において、これは、任意のHLLプログラムの必須の2番目の文である。
全ての定数及び変数を宣言する。したがって、コンパイラは、「メモリ記憶」(つまり、主及び/又はaltスタックの中の位置)を予約できる。規格は、主スタックに定数を、altスタックに変数を保持することである。コンパイラは、変数及び定数に与えられた名称をスタック上のそれらの位置に関連付ける。コンパイラは、使用者により提供されたデータインプットを既に含む(INITIATEを参照)指名されたアイテムを主スタックにプッシュする。主スタックの一番上には、それらのデータアイテムの数を表す値がある(これは、予約ワードNUM_INPUTSに関連付けられる)。
●構文:
HLLプログラムの宣言された(DECLARE)定数値を(主スタックのような)メモリ記憶に置くために、PUSHDATAコマンドを記述する。コマンドは、一番上から開始して、1つずつアイテムをメモリ記憶にプッシュし得る。コンパイラは、メモリ記憶の中の各定数値の位置(例えば、主スタック位置)を追跡できる。
HLLプログラムの変数を(altスタックのような)メモリ記憶に置くために、OP-TOALTSTACKコマンドを記述する。ここでも、コンパイラは、メモリ記憶の中の各変数の位置(例えば、altスタック位置)を追跡できる。
●説明:
変数は、メモリ内のその位置から読み出され、1だけ増加され、次にメモリ内のその位置に再配置される。
●構文:
INCREMENT (Variable-name)
ここで、
Variable-name:変数を識別するために宣言(Declaration)部分の中で使用される名称。
●コンパイラの動作:
注:コンパイラは、両方のスタックの変化するアイテム数(つまり、Main_Stack_Height及びALT_Stack_Height)の知識を維持する。コンパイラは、宣言(Declaration)部分の間に確立される各変数及び定数の各スタック上の位置も知っている。つまり、Var-Posn=altスタック内のVariable-nameの位置(つまり、スタックの一番下からのアイテムの数)。
●説明:
標準的なIFテスト。
●構文:
Value1:ハードコードされた値又は変数名又は定数名
Value2:ハードコードされた値又は変数名又は定数名
Test-operation:「=」、「<」、「>」、「≦」、「≧」(等)のような算術的テスト演算子。
●コンパイラの動作:
構文をチェックする。以下を含む:
●説明:
変数が指定値を割り当てられる。
●構文:
RESET(Variable-name,Reset-value)
ここで、
Variable-name:新しい値を割り当てられるべき変数の名称、
Reset-value:Variable-nameに割り当てられるべき値。
●コンパイラの動作:
注:コンパイラは、両方のスタックの変化するアイテム数(つまり、Main_Stack_Height及びALT_Stack_Height)の知識を維持する。コンパイラは、DECLARE部分の間に確立される、割り当てられたメモリ内の(つまり各スタック上の)各変数及び定数の位置も知っている。
Var-Posn=altスタック内のVariable-nameの位置(つまり、スタックの一番下からのアイテムの数)とする。演算は、Borrow Block技術を使用する。
●説明:
トランザクションを無効としてマークする。
●構文:
ABORT
●コンパイラの動作:
Write OP_0 OP_VERIFY
●説明:
この構成の目的は、トランザクション使用者からのインプット(例えば、spendingトランザクションのアンロックスクリプトの実行により供給されるインプット)を用いて、プログラマにより宣言(DECLARE)された定数を投入(populate)することである。
ロックスクリプトへのインプット(つまり「scriptsig’」)は、主スタックに任意のデータをプッシュする。これは、DECLARE構成の前に生じる。したがって、これらのインプットはスタックの一番下にある。スタックアイテムの数(NUM_INPUTS)は、(必須)INITIATE文によりそれらの一番上に置かれている。プログラマの責務は、トランザクションのルールが満たされたか(例えば、正しい数のインプットが提供されたこと)を検証することである。
●構文:
POPULATE(Stack-position,Constant-name)
ここで、
Stack-position:整数。メモリブロックの一番下から、カウントダウンされる位置。メモリブロックの一番下は、アイテムNUM_INPUTSを常に含み、これより下は、ロッキングスクリプトコードが実行される前にスタックにプッシュされたインプットデータがあることに留意する。
Constant-name:投入されるべき定数の名称。
●コンパイラの動作:
shift-count=保管のために主スタックからaltスタックへ一時的に移動されるべきスタックアイテムの数、を計算する。
shift-count=ターゲットアイテム(Constant-name)の一番上にあるスタックアイテムの数。
●説明:
Bitcoin Scriptコードの有効なチャンクを表す値の配列。コンパイラは、先ず、配列がスクリプトコードの有効なチャンク(OP_CODE、COP_CODE、及び整数を含む)であることを保証するために、配列を検証する。
目的は、プログラマが低レベルコードをCompilerアウトプットに直接包含できるようにすることである。これは、現在利用可能なHLL構成を使用するより、スクリプトコードに直接コーディングすることが一層容易な機能にとって有用である。
●構文:
RAWSCRIPT [Values]
ここで、
Values OP_CODE、COP_CODE、及びそれらの整数インプットの配列(リスト)
●コンパイラの動作:
コンパイラは、先ず、値のセットが有効なBitcoinスクリプトを一緒に構成することを検証する。つまり、OP_CODEは全て、現在受け入れられ有効にされたOP_CODEの部分であり、COP_CODEは全て、COP_CODEの私達の語彙の中に存在し、それらは全て期待されるインプット値を有する。
次に、コンパイラは、アウトプットスクリプトの中の現在位置に値を単に書き出す。
●説明:
有効な計算が行われ、結果を主スタックの一番上に置く。「有効」は、HLLに現在利用可能な関数構成のうちの1つであることを意味する。プログラマは、後に参照されたときにTEMPが利用可能であるように(つまり、依然としてスタックの一番上にあるように)、プログラムを書かなければならない。TEMPは1回だけ参照できることに留意する。(1回より多く必要な場合には、代わりに変数として宣言(DECLARE)されるべきである)。
●構文:
CALCULATE TEMP=expression
●コンパイラの動作:
表現(expression)が有効である(現在利用可能な関数構成のリストのメンバである)ことをチェックする。
該表現を実行して、結果(TEMP)をスタックの一番上に残す。
TEMPへの以下の参照をパースする。TEMPが参照のときにスタックの一番上に存在する必要があるかどうかを決定する。必要がない場合、コンパイルエラーを投じない。
●例:
CALCULATE TEMP=HASH160 (123456789)
●説明:
これは、OP_CODE:OP_HASH160と等価なハッシングアルゴリズムを実行する。
●構文:
HASH160(value1)
ここで、
value1は以下のいずれかである:
ハードコードされた整数
宣言(DECLARE)された定数
宣言(DECLARE)された変数
●コンパイラの動作:
Velue1がハードコードされた数ならば、スタックの一番上にプッシュされる。
Velue1が変数又は定数ならば、読み出される(RETRIEVED)(スタックの一番上に置かれる)。
コンパイラは以下を書き込む:
OP_HASH160
●説明:
変数又は定数は、それ自体のメモリ内の位置から読み出され、主スタックの一番上にコピーされる。元の値は、変更されないまま、それ自体の「メモリ」内の現在の位置に残る。
●構文:
RETRIEVE(Item-name)
ここで、
Item-name 宣言(DECLARE)された変数又は定数
●コンパイラの動作:
注:コンパイラは、両方のスタックの変化するアイテム数(つまり、Main_Stack_Height及びALT_Stack_Height)の知識を維持する。コンパイラは、宣言(Declaration)部分の間に確立される各変数及び定数の各スタック上の位置も知っている。つまり、Item-posn=スタック内のItem-nameの位置(つまり、スタックの一番下からのアイテムの数)。演算は、Borrow Block技術を使用する。
Item-Depth=Stack_Height-Item-posn+1を計算する。
必要なアイテムがaltスタックにある(つまり、変数である)場合、
メモリ割り当てが以下のように見えると仮定する。
●予約ワード:NUM_INPUTS
説明:これは、常にメモリブロックの一番下の定数である。つまり、割り当てられたスタック位置のブロック内の「最初の」アイテムである。これは定数であるが、コンパイルのときに分からない。したがって、これは、任意のハードコードされたスクリプト演算のためにコンパイラにより使用できない(例えば、これは、コンパイルされたコード内でOP_TOALTSTACK文が何回生成されるかを計数するための数値として使用できない)。これは、実行時間において分かる。したがって、これは、ループ及びIF文の中の条件テストのようなタスクのために、プログラマ又はコンパイラにより使用できる。
説明:これは、計算後にスタックの一番上に残される、一時的な一度限りの変数である。これは、プログラマが計算中に参照できるようにするために存在する。コンパイラは、プログラム中で後にTEMPが参照されるときに、TEMPが依然としてスタックの一番上にあることを保証するために、構文をチェックする。
説明:これは、DECLARE構成と関連して使用される。この後に、主スタックにプッシュされる構成のリストが続く。
説明:これは、DECLARE構成と関連して使用される。この後に、altスタックにプッシュされる変数のリストが続く。
10個のハードコードされたハッシュパズルの内部リストを有するブロックチェーントランザクション(Tx)を考える。Txのアウトプットをアンロックするために、使用者は、少なくとも3個の正しいハッシュ解を提供する必要がある。トランザクションのロックスクリプトは、同じインプット(つまり「scriptsig」)で最大12回の試行を受け付け、それらは任意の順序であり得る。トランザクションは、各インプット「try」をハッシュし、それが内部に格納したハッシュ値のうちの1つに一致するかどうかをチェックする。
<scriptSig> <scriptPubkey>
最初の部分<scriptSig>は、使用されている前のトランザクションのOUTPUTをアンロックするために、spendingトランザクションに含まれるデータ及び/又はOP_CODEである。2番目の部分<scriptPubkey>は、使用されている前のトランザクションのOUTPUTの中で使用されるロックスクリプトである。
<Spender Input> <locking script>
つまり、使用者は、5個の異なる可能なハッシュ解を試行した。上述のルールでは、トランザクションをアンロックするために、そのうちの3個は正しい必要がある。結合された<Spender Input> <locking script>が実行されると、最初の演算は<Spender Input>内のものになる。これは、本例では、単に5個のデータアイテムをスタックにプッシュすることである。
注:ネストされたWHILEループがある。
標準的な第1ステップ:インプットの数を計数し、NUM_INPUTSとして保存する。
スクリプトの中で使用される変数及び定数を宣言し、既知の値に初期化する。
以下のコードは、本開示の実施形態による構文を用いてHLLで記述されている。これは、WHILEの使用を説明することを目的とするが、やむを得ず、他のHLL構成も含み(これらは大文字である(CAPITALISED))、これらのうちの幾つかは上述され、従来の最新の高レベル言語により使用される構文に慣れている当業者に直ちに理解されるだろう。
/*INITIATE(初期化)
OP_DEPTH //NUM_INPUTS(予約ワード)を決定し、スタックの一番上に置く
/*DECLARECONSTANTS(定数の宣言)定数を初期化し、主スタックに置く。コンパイラは、定数の位置を知っている。12個の値の配列(これらは、「try値」であり、後に実際のインプット値を投入される)。
実際には、配列:Try[12]
OP_0 OP_0 OP_0 OP_0 OP_0 OP_0 OP_0 OP_0 OP_0
OP_3 //Correct_Needed-TXをアンロックするために必要な正しいハッシュの数は3とハードコードされる
OP_10 //Num_Hashes-配列内のハッシュの数は10とハードコードされる
OP_0 OP_TOALTSTACK // Correct_Counter-正しいヒットの数(ハッシュの一致が見付かったとき)。
OP_0 OP_TOALTSTACK // Try_counter-外側ループのインデックス:試行されているインプット値のカウンタ。
OP_0 OP_TOALTSTACK // Hash_counter-内側ループのインデックス:試行されているハッシュのカウンタ。
OP_0 OP_TOALTSTACK // Match_found-ブールフラグ:ハッシュの一致が見付かったときに真(True)に設定される。
27 OP_PICK OP_12 OP_GREATERTHAN OP_VERIFY OP_DROP
/*条件1(Condition1)のBorrow Block:「is Try_counter<NUM_Inputs AND Correct_counter<Correct_Needed?」。条件1の中のテストを行うために、私達は、altスタックから変数を抽出し、テストを実行し、次に変数を再び戻す(「borrow block」)。
/*先ず、Try_counterのコピーを得て、スタックの一番上に置く。
OP_14 OP_PICK
/*ここで、条件1(Condition1)の部分1(part1)について、上位2個のスタックアイテムの比較を行う。これは「Try-Counter<NUM_Inputs?」をチェックし、結果をスタックの一番上に残す。
OP_LESSTHAN
/*条件1(Condition1)の部分2(part2)のチェックを行う(「is Correct_counter<Correct_Needed?」)。結果をスタックの一番上に残す。
/*先ず、Correct_counterのコピーを得て、スタックの一番上に置く。
OP_LESSTHAN // ここで、条件1(Condition1)の部分2(part2)について、上位2個のスタックアイテムの比較を行う。これは「Correct_counter<Correct_needed?」をチェックし、結果をスタックの一番上に残す。
OP_BOOLAND // 条件1(condition1)の結合したチェックを完了する:条件1の両方の部分の結果がスタックの一番上にある。この演算の後に、Condition1のテストの最終結果がスタックの一番上にある。以下のIFによりポップオフされる。
OP_IF
<Try-depth>OP_PICK
OP_HASH160 //正式なHLLでは、これはTEMPの値であり、スタックの一番上に残される。更なる演算は、より多くの値を主スタックにプッシュし及び/又は主スタックからポップオフする。目的は、TEMPの値が(等価チェックのために)次に必要なとき、スタックの一番上にあることである。コンパイラは、正式なHLLコードに基づき常にスタック内に何があるかを追跡できるので、コンパイラはコンパイルのときにこれを検証できる
/*内側WHILEループは、与えられる例では10の最大値を有するNum_Hashes回の反復の間、実行される。したがって、コンパイラは、外側WHILEループの各反復の中で、以下のオペコードのシーケンスを(10回の反復以下である)Num_Hashes回の反復だけ複製することにより、内側WHILEループを展開する。
OP_NOT
/*ここで、condition2の部分2の変数Hash_Counter及びNUM_Hashesのコピーを取得する(Hash_Counter<NUM_Hashesかどうかをテストする)。コンパイラは、これらの変数の位置を知っている。
OP_LESSTHAN
/*condition2の結合したチェックを完了する。condition2チェックの両方の部分の結果は、スタックの一番上にある。この後に、最終結果がスタックの一番上に残される。
OP_IF
必要なハッシュ値の深さ(つまり<Hash-depth>)は、「current-stack-height」-「Hash1-position」-Hash_counter+1としてコンパイラにより計算できる。
/*コンパイラは、全ての定数の位置の知識を維持でき、したがって、第1ハッシュ値の位置が9であることを知っている(なぜなら、5個のTry値があり、3個の多の定数がスタックの一番下にあるからである)。
/*主スタックの一番上に1つのTEMP値があり、したがって、現在スタック高は19である。HASH-SAVED[4](Hash_counter=4)の深さが欲しい場合、深さは次の通りである。
「Hash-depth」=19-9-4+1=8
(つまり、現在、主スタックの一番上から8である)。
/*NUM_INPUTSを読み出すオペコード
/*NUM_INPUTS≧1をチェックするオペコード
OP_IF
内側WHILEループの2回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS≧2をチェックするオペコード
OP_IF
内側WHILEループの3回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS≧3をチェックするオペコード
OP_IF
内側WHILEループの4回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS≧4をチェックするオペコード
OP_IF
内側WHILEループの5回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS≧5をチェックするオペコード
OP_IF
内側WHILEループの6回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS≧6をチェックするオペコード
OP_IF
内側WHILEループの7回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS>=7をチェックするオペコード
OP_IF
内側WHILEループの8回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS>=8をチェックするオペコード
OP_IF
内側WHILEループの9回目の反復のオペコードシーケンスの複製
END_IF
/*NUM_INPUTS>=9をチェックするオペコード
OP_IF
内側WHILEループの10回目の反復のオペコードシーケンスの複製
END_IF
外側WHILEループの2回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの3回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの4回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの5回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの6回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの7回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの8回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの9回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの10回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの11回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの12回目の反復のオペコードシーケンスの複製(内側WHILEループの(最大10回の)NUM_INPUTS回の反復のオペコードシーケンスの複製を含む)。
外側WHILEループの12回の反復が完了すると、コンパイラは、必要なヒット数に達したかをチェックする(つまり、Correct_counter≧Correct_Neededをチェックする)。
Claims (16)
- コンピュータにより実施される方法であって、
インプットとしてソースコードの部分を受信するステップであって、前記ソースコードの部分は、高レベル言語(HLL)で記述される、ステップと、
機能的に制約されたブロックチェーンスクリプト言語から選択された及び/又は該言語に固有の複数のオペコードを含むアウトプットスクリプトを生成するステップであって、その結果、実行されると、前記アウトプットスクリプトが少なくとも部分的に前記ソースコードの部分の中で指定された機能を提供する、ステップと、
を含み、
前記アウトプットスクリプトを生成するステップは、前記ソースコードの部分の中で提供される少なくとも1つのループ構成を展開するステップを含み、
前記HLLは、前記ソースコードのインプットの数を前記機能的に制約されたブロックチェーンスクリプト言語によるメモリ割り当てのために使用されるスタックにプッシュするよう構成されるプリミティブを含む、方法。 - 請求項1のステップを実行するよう構成されるコンパイラを提供する又は使用するステップ、を含む請求項1に記載の方法。
- 前記アウトプットスクリプトは、静的コンパイルを実行することにより生成される、請求項1又は2に記載の方法。
- 前記ブロックチェーンスクリプト言語は制約されており、その結果、該言語は、複雑な制御フロー構成、反復、及び/又はジャンプに基づくループを本来サポートしない、請求項1、2、又は3に記載の方法。
- 前記アウトプットスクリプトをブロックチェーンプラットフォーム上で実行可能な形式に変換するよう構成されるインタープリタ又は仮想機械を提供する又は使用するステップ、
を更に含む請求項1乃至4のいずれかに記載の方法。 - 前記アウトプットスクリプトのより効率的な又は削減されたバージョンを提供するために、少なくとも1回、前記アウトプットスクリプトを最適化するステップ、
を更に含む請求項1乃至5のいずれかに記載の方法。 - 前記アウトプットスクリプトを生成する前記ステップは、導関数のない最適化の使用を含む、請求項1乃至6のいずれかに記載の方法。
- 請求項1乃至7のいずれかに記載のステップを実行するよう構成された前記HLL及び/又はコンパイラコンポーネントは、ソフトウェア開発キット(SDK)の部分を形成する、請求項1乃至7のいずれかに記載の方法。
- 前記ソースコードは、スマートコントラクトを実施するよう構成される、請求項1乃至8のいずれかに記載の方法。
- 前記HLLは、少なくとも1つのプリミティブ、又は前記機能的に制約されたブロックチェーンスクリプト言語に固有の1つ以上のプリミティブに直接変換可能な構成を含む、請求項1乃至9のいずれかに記載の方法。
- 前記ブロックチェーンスクリプト言語はスタックに基づき、前記HLLは、前記機能的に制約されたスクリプト言語により使用されるスタックに対して演算を実行するよう構成される1つ以上のプリミティブを含む、請求項1乃至10のいずれかに記載の方法。
- 前記HLLは、以下のプリミティブ又は演算子又はそれらの機能的に等価なもの:
Initiate;
Declare;
Increment;
IF;
While;
Populate;
Monus;
Reset;
Rawscript;
Abort;
Retrieve;
Hash、hash 160、又は別のハッシュ演算若しくはその変形;
のうちの少なくとも1つを含む、請求項1乃至11のいずれかに記載の方法。 - コンピュータにより実施される方法であって、
高レベル言語(HLL)で記述されたソースコードの部分をブロックチェーンと互換性のあるスクリプトに変換するために静的コンパイルを使用するステップであって、ブロックチェーンスクリプト言語は機能的に制約され、前記静的コンパイルは前記ソースコードの部分の中で提供される少なくとも1つのループ構成を展開するループ展開ステップを含み、前記HLLは、前記ソースコードのインプットの数を前記機能的に制約されたブロックチェーンスクリプト言語によるメモリ割り当てのために使用されるスタックにプッシュするよう構成されるプリミティブを含む、ステップ、
を含む方法。 - コンピュータにより実装されるシステムであって、請求項1乃至13のいずれかに記載のステップを実施するよう構成されるシステム。
- インプットとしてソースコードの部分を受信し、前記ソースコードは、高レベル言語(HLL)で記述され、
機能的に制約されたブロックチェーンスクリプト言語から選択された及び/又は該言語に固有の複数のオペコードを含むアウトプットスクリプトを生成し、その結果、実行されると、前記アウトプットスクリプトが少なくとも部分的に前記ソースコードの部分の中で指定された機能を提供する、
よう構成され、
前記アウトプットスクリプトを生成することは、前記ソースコードの部分の中で提供される少なくとも1つのループ構成を展開することを含み、前記HLLは、前記ソースコードのインプットの数を前記機能的に制約されたブロックチェーンスクリプト言語によるメモリ割り当てのために使用されるスタックにプッシュするよう構成されるプリミティブを含む、システム。 - ソフトウェア開発キット(SDK)を更に含む請求項14又は15に記載のシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023064745A JP7476390B2 (ja) | 2017-07-07 | 2023-04-12 | ブロックチェーンコンパイラ |
JP2024066569A JP2024096926A (ja) | 2017-07-07 | 2024-04-17 | ブロックチェーンコンパイラ |
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IB2017054113 | 2017-07-07 | ||
IBPCT/IB2017/054113 | 2017-07-07 | ||
GB1710971.1 | 2017-07-07 | ||
GB1710967.9 | 2017-07-07 | ||
IB2017054110 | 2017-07-07 | ||
GBGB1710974.5A GB201710974D0 (en) | 2017-07-07 | 2017-07-07 | Computer-implemented system and method |
GB1710974.5 | 2017-07-07 | ||
GBGB1710971.1A GB201710971D0 (en) | 2017-07-07 | 2017-07-07 | Computer-implemented system and method |
IB2017054114 | 2017-07-07 | ||
IBPCT/IB2017/054110 | 2017-07-07 | ||
GBGB1710967.9A GB201710967D0 (en) | 2017-07-07 | 2017-07-07 | Computer-implemented system and method |
IBPCT/IB2017/054114 | 2017-07-07 | ||
PCT/IB2018/054971 WO2019008533A1 (en) | 2017-07-07 | 2018-07-05 | SYSTEM AND METHOD FOR COMPILING A HIGH-LEVEL LANGUAGE CODE IN AN EXECUTABLE SCRIPT ON A BLOCK CHAIN PLATFORM |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023064745A Division JP7476390B2 (ja) | 2017-07-07 | 2023-04-12 | ブロックチェーンコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020526814A JP2020526814A (ja) | 2020-08-31 |
JP7317722B2 true JP7317722B2 (ja) | 2023-07-31 |
Family
ID=63077923
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019568229A Pending JP2020526811A (ja) | 2017-07-07 | 2018-07-05 | ブロックチェーンスクリプトにおける制御フロー |
JP2019569887A Active JP7317722B2 (ja) | 2017-07-07 | 2018-07-05 | ブロックチェーンコンパイラ |
JP2019568221A Active JP7220678B2 (ja) | 2017-07-07 | 2018-07-05 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
JP2023012689A Active JP7503670B2 (ja) | 2017-07-07 | 2023-01-31 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
JP2023064745A Active JP7476390B2 (ja) | 2017-07-07 | 2023-04-12 | ブロックチェーンコンパイラ |
JP2023079779A Active JP7535359B2 (ja) | 2017-07-07 | 2023-05-15 | ブロックチェーンスクリプトにおける制御フロー |
JP2024066569A Pending JP2024096926A (ja) | 2017-07-07 | 2024-04-17 | ブロックチェーンコンパイラ |
JP2024093389A Pending JP2024116281A (ja) | 2017-07-07 | 2024-06-10 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019568229A Pending JP2020526811A (ja) | 2017-07-07 | 2018-07-05 | ブロックチェーンスクリプトにおける制御フロー |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019568221A Active JP7220678B2 (ja) | 2017-07-07 | 2018-07-05 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
JP2023012689A Active JP7503670B2 (ja) | 2017-07-07 | 2023-01-31 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
JP2023064745A Active JP7476390B2 (ja) | 2017-07-07 | 2023-04-12 | ブロックチェーンコンパイラ |
JP2023079779A Active JP7535359B2 (ja) | 2017-07-07 | 2023-05-15 | ブロックチェーンスクリプトにおける制御フロー |
JP2024066569A Pending JP2024096926A (ja) | 2017-07-07 | 2024-04-17 | ブロックチェーンコンパイラ |
JP2024093389A Pending JP2024116281A (ja) | 2017-07-07 | 2024-06-10 | ブロックチェーン上で高レベル演算を提供する方法及びシステム |
Country Status (8)
Country | Link |
---|---|
US (9) | US11307835B2 (ja) |
EP (6) | EP4300290A3 (ja) |
JP (8) | JP2020526811A (ja) |
KR (1) | KR102608500B1 (ja) |
CN (3) | CN110869905B (ja) |
SG (1) | SG11201912227YA (ja) |
WO (3) | WO2019008533A1 (ja) |
ZA (1) | ZA201908552B (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307835B2 (en) | 2017-07-07 | 2022-04-19 | nChain Holdings Limited | Method for controlling the flow execution of a generated script of a blockchain transaction |
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
US12061452B2 (en) | 2018-08-24 | 2024-08-13 | Tyco Fire & Security Gmbh | Building management system with blockchain ledger |
US10964145B2 (en) * | 2018-08-24 | 2021-03-30 | Sensormatic Electronics, LLC | Access control system using blockchain ledger |
CN111949315A (zh) * | 2019-05-16 | 2020-11-17 | 富士通株式会社 | 用于区块链账本数据的管理装置和方法 |
US10699269B1 (en) | 2019-05-24 | 2020-06-30 | Blockstack Pbc | System and method for smart contract publishing |
US11657391B1 (en) | 2019-05-24 | 2023-05-23 | Hiro Systems Pbc | System and method for invoking smart contracts |
US11513815B1 (en) * | 2019-05-24 | 2022-11-29 | Hiro Systems Pbc | Defining data storage within smart contracts |
US10783082B2 (en) * | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
GB201913143D0 (en) * | 2019-09-12 | 2019-10-30 | Nchain Holdings Ltd | Running a program from a blockchain |
US11516147B2 (en) * | 2019-10-02 | 2022-11-29 | Red Hat, Inc. | Blockchain-based dynamic storage provisioner |
US11436677B2 (en) | 2019-12-09 | 2022-09-06 | Eris Digital Holdings, Llc | Electronic trading and settlement system for blockchain-integrated cryptographic difficulty-based financial instruments |
US11314729B2 (en) * | 2020-02-20 | 2022-04-26 | International Business Machines Corporation | Multi-candidate data structure for transaction validation |
US20220066746A1 (en) * | 2020-08-31 | 2022-03-03 | Jpmorgan Chase Bank, N.A. | Systems and methods for graphical programming and deployment of distributed ledger applications |
CN113031931A (zh) * | 2021-03-04 | 2021-06-25 | 嘉兴丰鸟科技有限公司 | 一种基于脚本交叉编译的Python安全扩展方法 |
US11902426B2 (en) * | 2021-06-26 | 2024-02-13 | Ceremorphic, Inc. | Efficient storage of blockchain in embedded device |
KR102460351B1 (ko) * | 2021-06-29 | 2022-10-31 | 주식회사 퓨처에셋파이넨셜 | 파일코인 채굴 생산성 향상 장치 및 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 |
GB2618052A (en) * | 2021-12-07 | 2023-11-01 | Nchain Licensing Ag | Blockchain script engine |
US11658833B1 (en) | 2022-12-06 | 2023-05-23 | Citibank, N.A. | Systems and methods for conducting cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs |
US11770263B1 (en) | 2022-12-06 | 2023-09-26 | Citibank, N.A. | Systems and methods for enforcing cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs comprising shared digital signature requirements |
CN118118444B (zh) * | 2024-04-28 | 2024-07-12 | 之江实验室 | 一种基于可编程交换机的计算功能抽象方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014525632A (ja) | 2011-09-02 | 2014-09-29 | マイクロソフト コーポレーション | スクリプト・コードを有するマークアップ・コンテンツの高速プレゼンテーション |
WO2016109277A1 (en) | 2015-01-02 | 2016-07-07 | Systech Corporation | Control infrastructure |
US20160342977A1 (en) | 2015-05-20 | 2016-11-24 | Vennd.io Pty Ltd | Device, method and system for virtual asset transactions |
US20170039330A1 (en) | 2015-08-03 | 2017-02-09 | PokitDok, Inc. | System and method for decentralized autonomous healthcare economy platform |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731603B2 (ja) | 1984-11-21 | 1995-04-10 | ノビツクス | Forth特定言語マイクロプロセサ |
JPH01243162A (ja) * | 1988-03-17 | 1989-09-27 | Internatl Business Mach Corp <Ibm> | プログラム供給方法 |
JP3032031B2 (ja) * | 1991-04-05 | 2000-04-10 | 株式会社東芝 | ループ最適化方法及び装置 |
US5774726A (en) * | 1995-04-24 | 1998-06-30 | Sun Microsystems, Inc. | System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler |
US5761652A (en) * | 1996-03-20 | 1998-06-02 | International Business Machines Corporation | Constructing balanced multidimensional range-based bitmap indices |
US6760905B1 (en) | 2000-09-21 | 2004-07-06 | Curl Corporation | Lazy compilation of template-generated classes in dynamic compilation execution environments |
US7168059B2 (en) * | 2001-04-20 | 2007-01-23 | Bryan Darrell Bowyer | Graphical loop profile analysis |
US6948160B2 (en) | 2001-05-31 | 2005-09-20 | Sun Microsystems, Inc. | System and method for loop unrolling in a dynamic compiler |
JP4490084B2 (ja) * | 2003-12-03 | 2010-06-23 | 安川情報システム株式会社 | プログラム開発システムにおけるプログラム作成方法 |
JP2006107339A (ja) * | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
CA2608796C (en) | 2005-03-31 | 2013-09-03 | Georgetown University | Free thyroxine and free triiodothyronine analysis by mass spectrometry |
CN100487652C (zh) * | 2005-04-02 | 2009-05-13 | 华为技术有限公司 | 脚本语言的自动机方法 |
US7861222B2 (en) * | 2007-06-13 | 2010-12-28 | Microsoft Corporation | Discoscript: a simplified distributed computing scripting language |
JP5179822B2 (ja) * | 2007-09-27 | 2013-04-10 | 株式会社日立ソリューションズ | 携帯電話、携帯電話スクリプト開発・実行システム |
US8533666B2 (en) * | 2008-10-17 | 2013-09-10 | Microsoft Corporation | Interactive design environments to visually model, debug and execute resource oriented programs |
US8370811B2 (en) * | 2009-07-16 | 2013-02-05 | Accenture Global Services Limited | Modularizing and aspectizing graphical user interface directed test scripts |
CN102999370A (zh) * | 2011-09-16 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 脚本的执行方法及系统 |
US8997070B2 (en) * | 2011-12-15 | 2015-03-31 | Sap Se | Extension mechanism for scripting language compiler |
US10417314B2 (en) * | 2012-06-14 | 2019-09-17 | Open Text Sa Ulc | Systems and methods of a script generation engine |
WO2014022326A1 (en) * | 2012-07-31 | 2014-02-06 | Microsoft Corporation | Multilingual build integration for compiled applications |
US8869122B2 (en) | 2012-08-30 | 2014-10-21 | Sybase, Inc. | Extensible executable modeling |
US9152400B2 (en) | 2013-04-18 | 2015-10-06 | Facebook, Inc. | Eliminating redundant reference count operations in intermediate representation of script code |
US9684499B2 (en) | 2013-06-30 | 2017-06-20 | Dropbox, Inc. | Systems and methods for facilitating installation of software applications |
KR102156371B1 (ko) | 2013-11-27 | 2020-09-15 | 한국전자통신연구원 | 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치 |
CN104484192B (zh) * | 2015-01-07 | 2017-11-14 | 南威软件股份有限公司 | 一种复杂多分支结构代码自动生成的方法 |
US9892021B2 (en) | 2015-03-18 | 2018-02-13 | Sap Se | Injection of code modifications in a two session debug scripting environment |
US10812274B2 (en) * | 2015-05-07 | 2020-10-20 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
US9735958B2 (en) | 2015-05-19 | 2017-08-15 | Coinbase, Inc. | Key ceremony of a security system forming part of a host computer for cryptographic transactions |
JP6636058B2 (ja) | 2015-07-02 | 2020-01-29 | ナスダック, インコーポレイテッドNasdaq, Inc. | 分散トランザクションデータベースにおける出所保証のシステムおよび方法 |
JP6547466B2 (ja) | 2015-07-06 | 2019-07-24 | 富士通株式会社 | コンパイラ装置、コンパイル方法およびコンパイラプログラム |
US20170011460A1 (en) * | 2015-07-09 | 2017-01-12 | Ouisa, LLC | Systems and methods for trading, clearing and settling securities transactions using blockchain technology |
EP3125489B1 (en) * | 2015-07-31 | 2017-08-09 | BRITISH TELECOMMUNICATIONS public limited company | Mitigating blockchain attack |
WO2017027407A1 (en) | 2015-08-07 | 2017-02-16 | Kinestral Technologies, Inc. | Electrochromic device assemblies |
DE112016003692T5 (de) * | 2015-08-13 | 2018-04-26 | Intel IP Corporation | CIoT-Architektur für effiziente Datenübertragung |
US9569206B1 (en) | 2015-09-29 | 2017-02-14 | International Business Machines Corporation | Creating optimized shortcuts |
EP3173962A1 (en) * | 2015-11-25 | 2017-05-31 | Gemalto Sa | Method to generate a secure code |
JP6833861B2 (ja) | 2016-02-23 | 2021-02-24 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | ブロックチェーンシステム内におけるフィードバックを統合したエージェントベースチューリング完全なトランザクション |
US20170287090A1 (en) | 2016-03-31 | 2017-10-05 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
US10720232B2 (en) | 2016-04-13 | 2020-07-21 | Accenture Global Solutions Limited | Distributed healthcare records management |
US10180900B2 (en) * | 2016-04-15 | 2019-01-15 | Red Hat Israel, Ltd. | Recordation of user interface events for script generation |
GB2564200A (en) | 2016-04-29 | 2019-01-09 | Nchain Holdings Ltd | Implementing logic gate functionality using a blockchain |
CN106296191A (zh) * | 2016-08-13 | 2017-01-04 | 深圳市樊溪电子有限公司 | 一种区块链功耗感知的PoW共识机制 |
CN106598579B (zh) | 2016-12-06 | 2020-12-25 | 北京果仁宝科技有限公司 | 区块链上集成动态类型编程语言方法和装置 |
CN106598549B (zh) * | 2016-12-08 | 2019-02-01 | 天津米游科技有限公司 | 一种基于区块链的智能合约系统及实现方法 |
CN106778343A (zh) * | 2016-12-12 | 2017-05-31 | 武汉优聘科技有限公司 | 一种基于区块链的涉及隐私数据的数据共享方法 |
US10871948B1 (en) | 2017-03-30 | 2020-12-22 | Wells Fargo Bank, N.A. | Smart contract blockchain abstraction API |
US10235280B2 (en) | 2017-04-10 | 2019-03-19 | Fmr Llc | Automated script creation and source code generation for testing mobile devices |
US10963790B2 (en) * | 2017-04-28 | 2021-03-30 | SparkCognition, Inc. | Pre-processing for data-driven model creation |
US11307835B2 (en) | 2017-07-07 | 2022-04-19 | nChain Holdings Limited | Method for controlling the flow execution of a generated script of a blockchain transaction |
-
2018
- 2018-07-05 US US16/629,291 patent/US11307835B2/en active Active
- 2018-07-05 EP EP23197250.6A patent/EP4300290A3/en active Pending
- 2018-07-05 WO PCT/IB2018/054971 patent/WO2019008533A1/en unknown
- 2018-07-05 JP JP2019568229A patent/JP2020526811A/ja active Pending
- 2018-07-05 CN CN201880045587.4A patent/CN110869905B/zh active Active
- 2018-07-05 JP JP2019569887A patent/JP7317722B2/ja active Active
- 2018-07-05 US US16/629,287 patent/US11797278B2/en active Active
- 2018-07-05 EP EP23213682.0A patent/EP4328739A3/en active Pending
- 2018-07-05 WO PCT/IB2018/054970 patent/WO2019008532A1/en unknown
- 2018-07-05 CN CN201880045599.7A patent/CN110869906B/zh active Active
- 2018-07-05 EP EP18749552.8A patent/EP3649548A1/en not_active Ceased
- 2018-07-05 JP JP2019568221A patent/JP7220678B2/ja active Active
- 2018-07-05 WO PCT/IB2018/054969 patent/WO2019008531A1/en unknown
- 2018-07-05 EP EP18749139.4A patent/EP3649547A1/en not_active Ceased
- 2018-07-05 EP EP23208507.6A patent/EP4325351A3/en active Pending
- 2018-07-05 EP EP18749140.2A patent/EP3649759A1/en not_active Ceased
- 2018-07-05 CN CN201880045600.6A patent/CN110870249A/zh active Pending
- 2018-07-05 SG SG11201912227YA patent/SG11201912227YA/en unknown
- 2018-07-05 KR KR1020207001661A patent/KR102608500B1/ko active IP Right Grant
- 2018-07-05 US US16/629,295 patent/US11416226B2/en active Active
-
2019
- 2019-12-20 ZA ZA2019/08552A patent/ZA201908552B/en unknown
-
2022
- 2022-04-18 US US17/723,381 patent/US11922149B2/en active Active
- 2022-08-13 US US17/887,445 patent/US11868745B2/en active Active
-
2023
- 2023-01-26 US US18/101,977 patent/US11941381B2/en active Active
- 2023-01-31 JP JP2023012689A patent/JP7503670B2/ja active Active
- 2023-04-12 JP JP2023064745A patent/JP7476390B2/ja active Active
- 2023-05-15 JP JP2023079779A patent/JP7535359B2/ja active Active
- 2023-11-28 US US18/521,958 patent/US20240168735A1/en active Pending
-
2024
- 2024-01-24 US US18/421,885 patent/US20240231777A1/en active Pending
- 2024-02-21 US US18/583,677 patent/US20240211222A1/en active Pending
- 2024-04-17 JP JP2024066569A patent/JP2024096926A/ja active Pending
- 2024-06-10 JP JP2024093389A patent/JP2024116281A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014525632A (ja) | 2011-09-02 | 2014-09-29 | マイクロソフト コーポレーション | スクリプト・コードを有するマークアップ・コンテンツの高速プレゼンテーション |
WO2016109277A1 (en) | 2015-01-02 | 2016-07-07 | Systech Corporation | Control infrastructure |
US20160342977A1 (en) | 2015-05-20 | 2016-11-24 | Vennd.io Pty Ltd | Device, method and system for virtual asset transactions |
US20170039330A1 (en) | 2015-08-03 | 2017-02-09 | PokitDok, Inc. | System and method for decentralized autonomous healthcare economy platform |
WO2017024071A1 (en) | 2015-08-03 | 2017-02-09 | PokitDok, Inc. | System and method for decentralized autonomous healthcare economy platform |
Non-Patent Citations (3)
Title |
---|
evm-opcode-gas-costs,[オンライン],2017年04月12日,[検索日: 2022.04.28], インターネット: <URL: https://github.com/djrtwo/evm-opcode-gas-costs/blob/master/opcode-gas-costs_EIP-150_revision-1e18248_2017-04-12.csv> |
Solidity in Depth, Expressions and Control Structures,[オンライン],2017年07月03日,[検索日: 2022.04.28], インターネット: <URL: https://docs.huihoo.com/ethereum/solidity/control-structures.html> |
石井直也、外3名,Ruby向け動的コンパイラの実装,情報処理学会論文誌 論文誌トランザクション 平成22年度▲2▼ [CD-ROM] ,一般社団法人情報処理学会,2011年04月15日,第4巻、第1号,p109~122 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7317722B2 (ja) | ブロックチェーンコンパイラ | |
Feist et al. | Slither: a static analysis framework for smart contracts | |
EP3906488B1 (en) | Method and contract rewriting framework system for supporting smart contracts in a blockchain network | |
Nelson et al. | Specification and verification in the field: Applying formal methods to {BPF} just-in-time compilers in the linux kernel | |
US8863082B2 (en) | Transformational context-aware data source management | |
EP3724806A1 (en) | Blockchain-implemented systems and methods for concurrent bytecode interpretation | |
US20200201838A1 (en) | Middleware to automatically verify smart contracts on blockchains | |
US9965257B2 (en) | Automatic configuration of project system from project capabilities | |
Argañaraz et al. | Detection of vulnerabilities in smart contracts specifications in ethereum platforms | |
Lin et al. | Solsee: a source-level symbolic execution engine for solidity | |
Schneidewind et al. | The good, the bad and the ugly: Pitfalls and best practices in automated sound static analysis of ethereum smart contracts | |
Schrans et al. | Flint for safer smart contracts | |
He et al. | Neural-FEBI: Accurate function identification in Ethereum Virtual Machine bytecode | |
Li et al. | Spoq: Scaling {Machine-Checkable} Systems Verification in Coq | |
CN114174983B (zh) | 用于高级构造的优化的自动验证的方法和系统 | |
Xi et al. | When they go low: automated replacement of low-level functions in ethereum smart contracts | |
Liu et al. | Reunify: A step towards whole program analysis for react native android apps | |
Kim et al. | Static dalvik bytecode optimization for Android applications | |
Pona et al. | Formally-Verified ASN. 1 Protocol C-language Stack | |
Veschetti et al. | SmartML: Enhancing Security and Reliability in Smart Contract Development | |
Budde | Exploring the Use of Static Data Flow Analysis for Automatic Vulnerability Audits of Rust Code | |
Sharkey | Probabilistic proof-carrying code | |
CN118295638A (zh) | 一种区块链服务生成方法及相关设备 | |
Nebbiante | EL: A Shell for the Ethos Operating System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210608 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220517 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220815 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20221213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230412 |
|
C60 | Trial request (containing other claim documents, opposition documents) |
Free format text: JAPANESE INTERMEDIATE CODE: C60 Effective date: 20230412 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20230420 |
|
C21 | Notice of transfer of a case for reconsideration by examiners before appeal proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C21 Effective date: 20230425 |
|
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: 20230620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230719 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7317722 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |