JP2023075152A - 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム - Google Patents
最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム Download PDFInfo
- Publication number
- JP2023075152A JP2023075152A JP2023026258A JP2023026258A JP2023075152A JP 2023075152 A JP2023075152 A JP 2023075152A JP 2023026258 A JP2023026258 A JP 2023026258A JP 2023026258 A JP2023026258 A JP 2023026258A JP 2023075152 A JP2023075152 A JP 2023075152A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic circuit
- computer
- implemented method
- nodes
- blockchain
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 100
- 238000012545 processing Methods 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 10
- 230000001131 transforming effect Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 41
- 230000006870 function Effects 0.000 description 28
- 230000009467 reduction Effects 0.000 description 22
- 238000013515 script Methods 0.000 description 17
- 238000012795 verification Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 238000005065 mining Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000003826 tablet Substances 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 241001619348 Idris Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000012790 confirmation Methods 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
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000002408 directed self-assembly Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000013259 porous coordination polymer Substances 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- 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
-
- 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
- G06F8/4441—Reducing the execution time required by the program code
-
- 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/447—Target code generation
-
- 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
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0877—Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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/3218—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/3263—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
-
- 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/34—Encoding or coding, e.g. Huffman coding or error correction
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Power Engineering (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Devices For Executing Special Programs (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Stored Programmes (AREA)
Abstract
【課題】本発明は、コンセンサスベースのブロックチェーンのような分散台帳技術を提供する。
【解決手段】スマートコントラクトから導出された算術回路を縮小するためのコンピュータ実装方法が説明される。本発明は、例えばビットコインブロックチェーンであり得るブロックチェーンネットワークを使用して実装される。第1プログラミング言語で符号化された条件のセットが取得される。条件のセットは、第2プログラミング言語で符号化された条件のプログラムのセットに変換される。条件のプログラムのセットは、予めコンパイルされたプログラムコードに予めコンパイルされる。予めコンパイルされたプログラムコードは、算術回路に変形される。算術回路を縮小して縮小算術回路を形成し、縮小算術回路を格納する。
【選択図】図4
【解決手段】スマートコントラクトから導出された算術回路を縮小するためのコンピュータ実装方法が説明される。本発明は、例えばビットコインブロックチェーンであり得るブロックチェーンネットワークを使用して実装される。第1プログラミング言語で符号化された条件のセットが取得される。条件のセットは、第2プログラミング言語で符号化された条件のプログラムのセットに変換される。条件のプログラムのセットは、予めコンパイルされたプログラムコードに予めコンパイルされる。予めコンパイルされたプログラムコードは、算術回路に変形される。算術回路を縮小して縮小算術回路を形成し、縮小算術回路を格納する。
【選択図】図4
Description
本発明は、一般に、ブロックチェーン技術に関し、より具体的には、スマートコントラクトを算術回路に変換し、算術回路を最小化することによって、スマートコントラクトを最適化し、難読化(obfuscating)することに関する。本発明は更に、暗号技術及び数学技術を利用して、ブロックチェーンネットワーク上で行われる電子転送に関連してセキュリティを実施する。本発明は、スマートコントラクトの生成及び実行における使用に特に適しているが、これらに限定されない。
本明細書において、「ブロックチェーン」という用語は、いくつかのタイプの電子的なコンピュータベースの分散台帳のいずれかを指してよい。これらは、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され、開発されている。便宜性及び例示の目的のために、ビットコインの例が本開示で説明される技術の有益な用途として参照され得るが、ビットコインは、本開示で説明される技術が適用され得る多くの用途の1つに過ぎない。しかしながら、本発明は、ビットコインブロックチェーンでの使用に限定されず、非商業的用途を含む代替的なブロックチェーン実装及びプロトコルも本発明の範囲内に含まれることに留意されたい。例えば本開示に記載される技術は、暗号通貨の交換が起こるかどうかにかかわらず、トランザクション内で符号化され得る制約に関して、ビットコインと同様の制限を有する他のブロックチェーン実装を利用する利点を提供するであろう。
ブロックチェーンは、ブロックにより構成される、コンピュータベースの非集中型のシステムとして実装されるピアツーピア電子台帳であり、ブロックはトランザクション及び他の情報により構成され得る。いくつかの例において、「ブロックチェーントランザクション」は、データ及び条件のセットを含むフィールド値の構造化されたコレクションを符号化する入力メッセージを指し、この場合、条件のセットを満たすことは、フィールドのセットがブロックチェーンデータ構造に書き込まれるための前提条件である。例えばビットコインでは、各トランザクションは、ブロックチェーンシステムの参加者間のデジタル資産の制御の移転を符号化し、少なくとも1つの入力及び少なくとも1つの出力を含む、データ構造である。いくつかの実施形態において、「デジタル資産」は、使用権に関連付けられるバイナリデータを指す。デジタル資産の例は、ビットコイン、イーサ、ライトコインを含む。いくつかの実装において、デジタル資産の制御を移転することは、デジタル資産の少なくとも一部を第1エンティティから第2エンティティに再関連付けすることによって実行され得る。ブロックチェーンの各ブロックは、ブロックが一緒にチェーン化されることになり、その始めからブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不能なレコードを作成するように、以前のブロックのハッシュを含んでよい。
いくつかの例において、「スタックベースのスクリプト言語」は、様々なスタックベース又はスタック指向の実行モデル及びオペレーションをサポートするプログラミング言語を指す。すなわち、スタックベースのスクリプト言語は、スタックを利用してもよい。スタックでは、値をスタックの先頭(top)にプッシュすることができ、あるいはスタックの先頭からポップすることができる。スタックに対して実行される様々なオペレーションの結果、1つ以上の値を、スタックの先頭へプッシュすること又はスタックの先頭からポップすることになり得る。例えばOP_EQUALオペレーションは、スタックから上位2つのアイテムをポップし、それらを比較し、結果(例えば等しい場合は1、等しくない場合は0)をスタックの先頭にプッシュする。OP_PICKのようにスタックに対して実行される他のオペレーションは、スタックの先頭以外の位置からアイテムを選択することを可能にすることがある。本実施形態のいくつかで用いられるいくつかのスクリプト言語では、少なくとも2つのスタック、すなわち、メインスタックと代替スタックが存在し得る。スクリプト言語のいくつかのオペレーションは、あるスタックの先頭から別のスタックの先頭にアイテムを移動させることができる。例えばOP_TOALTSTACKは、メインスタックの先頭から代替スタックの先頭に値を移動させる。スタックベースのスクリプト言語は、場合によっては、厳密な後入れ先出し(LIFO)方式のオペレーションのみに限定されないことに留意されたい。例えばスタックベースのスクリプト言語は、スタック内のn番目のアイテムを先頭にコピー又は移動させるオペレーション(例えばそれぞれ、ビットコインにおけるOP_PICK及びOP_ROLL)をサポートしてもよい。スタックベースのスクリプト言語で書かれたスクリプトは、ベクトル、リスト又はスタックのような任意の適切なデータ構造を使用して実装することができる論理スタック上にプッシュされ得る。
トランザクションがブロックチェーンに書き込まれるためには、「検証(validate)」されなければならない。ネットワークノード(マイニングノード)は、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる有効性の標準を有することができる。ブロックチェーンの有効性はコンセンサスベースであるので、トランザクションが有効であることに大多数のノードが同意した場合、トランザクションは有効であるとみなされる。ノードにインストールされているソフトウェアクライアントは、UTXOのロッキングスクリプト及びアンロッキングスクリプトを実行することにより、部分的に未使用トランザクション(UTXO:unspent transaction)を参照するトランザクションに対するこの検証作業を実行する。ロッキングスクリプト及びアンロッキングスクリプトの実行がTRUEに評価され、適用可能である場合に他の検証条件が満たされる場合、トランザクションはノードによって検証される。検証されたトランザクションは、他のネットワークノードに伝搬され、そこで、マイニングノードは、トランザクションをブロックチェーンに含めるように選択することができる。したがって、トランザクションがブロックチェーンに書き込まれるためには、i)トランザクションは、該トランザクションを受け取った最初のノードによって検証されなければならず、トランザクションが検証された場合、ノードはトランザクションをネットワーク内の他のノードに中継し;ii)トランザクションは、マイニングノードによって構築された新しいブロックに追加されなければならず;iii)マイニングされなければならない、すなわち、過去のトランザクションの公開台帳に追加されなければならない。トランザクションを実質的に不可逆にするために、十分な数のブロックがブロックチェーンに追加されると、トランザクションは確認されたとみなされる。
ブロックチェーン技術は、暗号通貨実装の使用について最も広く知られているが、デジタル起業家達は、新たなシステムを実装するために、ビットコインが基づいている暗号セキュリティシステムと、ブロックチェーン上に格納することができるデータとの双方の使用を探求し始めている。暗号通貨の領域に限定されない自動化タスク及びプロセスにブロックチェーンを使用することができれば非常に有利であろう。そのようなソリューションは、それらの用途はより多方面にわたるが、ブロックチェーンの利点(例えば永続性、イベントの改ざん防止レコード、分散処理等)を利用することができるであろう。
本開示は、1つ以上のブロックチェーンベースのコンピュータプログラムの技術的側面を説明する。ブロックチェーンベースのコンピュータプログラムは、ブロックチェーントランザクション内に記録される機械読取可能で実行可能なプログラムであってよい。ブロックチェーンベースのコンピュータプログラムは、結果を生成するために入力を処理することができ、次いで、それらの結果に依存してアクションを実行させることができるルールを含んでよい。現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンベースのコンピュータプログラムの使用である。自然言語で書かれる伝統的な契約とは異なり、スマートコントラクトは、機械読み取り可能な契約又は合意の条件の実行を自動化するように設計されるコンピュータプログラムであってよい。
実施形態において、特定のエンティティとの対話を、スマートコントラクトの特定のステップで符号化することができるが、スマートコントラクトは、そうでなければ、自動的に実行され、自己強制される可能性がある。それは、機械読み取り可能かつ実行可能である。いくつかの例では、自動実行は、UTXOの移転を可能にするために成功裏に実行されるスマートコントラクトの実行を指す。なお、このような例では、UTXOの移転送を可能にする「エンティティ」は、何らかの秘密の知識を証明することを必要とされることなく、アンロッキングスクリプトを作成することができるエンティティを指すことに留意されたい。言い換えると、データのソース(例えばアンロッキングトランザクションを作成したエンティティ)が暗号秘密(例えば秘密の非対称鍵、対称鍵等)へのアクセスを有することを確かめることなく、アンロッキングトランザクションを検証することができる。加えて、このような例では、自己強制とは、制約に応じてアンロッキングトランザクションを強制させているブロックチェーンネットワークの検証ノードを指す。いくつかの例では、UTXOを「アンロック」すること(UTXOの「消費(spending)」としても知られる)は、技術的な意味で使用されており、UTXOを参照して、有効として実行するアンロッキングトランザクションを作成することを指す。
ブロックチェーントランザクションの出力は、ロッキングスクリプトと、ビットコイン等のデジタル資産の所有権に関する情報を含む。ロッキングスクリプトは、障害(encumbrance)とも呼ばれることがあり、UTXOを移転するために満足する必要がある条件を指定することにより、デジタル資産を「ロック」する。例えばロッキングスクリプトは、関連するデジタル資産をアンロックするために、特定のデータがアンロッキングスクリプトで提供されることを必要とする可能性がある。ロッキングスクリプトは、ビットコインでは「scriptPubKey」としても知られる。デジタル資産をアンロックするためにデータの提供を当事者に要求する技術は、ロッキングスクリプト内部にデータのハッシュを埋め込むことを伴う。しかしながら、これは、ロッキングスクリプトが作成される時点でデータが未定である(例えば未知で固定されていない)場合に問題を提示する。
本発明は、検証方法/システムとして、かつ/又はブロックチェーントランザクションの検証を制御するための制御方法/システムとして説明され得る。いくつかの実施形態では、検証されたブロックチェーントランザクションの結果、ブロックチェーン上のトランザクションの記録をもたらし、これは、いくつかの用途では、ブロックチェーンを介したデジタル資産の交換又は移転をもたらすことがある。デジタル資産は、ブロックチェーンによって管理されるリソースの単位であってよい。デジタル資産は、実施形態によっては、暗号通貨として使用され得るが、デジタル資産は、実施形態によっては、他のコンテキストにおいて追加的又は代替的に使用可能であるように企図される。本発明は、デジタル資産の制御に適用可能であるが、本質的に技術的であり、デジタル資産の移転を必ずしも伴わずに、ブロックチェーンデータ構造を利用する他のコンテキストで使用できることに留意されたい。
したがって、これらの態様の1つ以上においてブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。このような改善されたソリューションが、現在では考案されている。したがって、本発明によれば、添付の特許請求の範囲で定義される方法が提供される。
したがって、コンピュータ実施される方法を提供することが望ましく、コンピュータ実施される方法は、
第1プログラミング言語で符号化された条件のセットを、第2プログラミング言語で符号化された条件のプログラムセット(programmatic set)に変換するステップと;
条件のプログラムセットを予めコンパイルされたプログラムコードに予めコンパイルするステップと;
予めコンパイルされたプログラムコードを算術回路に変形する(transforming)ステップと;
算術回路を縮小(reducing)して縮小算術回路(reduced arithmetic circuit)を形成するステップと;
を含む。
第1プログラミング言語で符号化された条件のセットを、第2プログラミング言語で符号化された条件のプログラムセット(programmatic set)に変換するステップと;
条件のプログラムセットを予めコンパイルされたプログラムコードに予めコンパイルするステップと;
予めコンパイルされたプログラムコードを算術回路に変形する(transforming)ステップと;
算術回路を縮小(reducing)して縮小算術回路(reduced arithmetic circuit)を形成するステップと;
を含む。
方法は、第1プログラミング言語で符号化された条件のセットを取得するステップを含んでよい。これは、変換するステップの前に実行されてよい。
方法は、縮小算術回路を格納するステップを含んでよい。
算術回路を縮小することは、算術回路を最小化して縮小算術回路を生成することを含んでよい。
算術回路は、有向非巡回グラフ(directed acyclical graph)であってよい。あるいはまた、有向非巡回グラフは、論理ゲート及び入力を表すノードのセットを含んでよい。あるいはまた、有向非巡回グラフは、論理ゲートと入力の間のワイヤを表すノードをエッジのセットを含んでよい。
算術回路は、ノードのセットのうちの適切なサブセット(proper subset)を含む論理サブモジュールを含んでよい。あるいはまた、算術回路を縮小することは、算術回路の残り部分とは別に論理サブモジュールを縮小することを含んでよい。
論理サブモジュール内の論理ゲートの間のワイヤは、幅が1ビットであってよい。
算術回路は、ノードのセットのうちの他のサブセットを含む別の論理サブモジュールを更に含んでよい。加えて、ノードのサブセット及びノードの他のサブセットは交わっていない(nonintersecting)ことがある。加えて、算術回路を縮小することは、第2プロセッサコアを使用して他の論理サブモジュールを縮小することと並列に第1プロセッサコアを使用して論理サブモジュールを縮小することを更に含んでよい。
コンピュータ実施される方法は、計算リソース使用を最適化するためのヒューリスティックに従って、論理サブモジュールを第1プロセッサコアに割り当てて、他の論理サブモジュールを第2プロセッサコアに割り当てるステップを更に含んでよい。
ヒューリスティックは、最長処理時間貪欲法(longest processing time greedy algorithm)であってよい。
算術回路を縮小することは、算術回路のプライムインプリカント(prime implicant(主項))のセットを決定することを含んでよい。加えて、算術回路を縮小することは、プライムインプリカントのセットを、第1積項及び第2積項を含む和の積として表すことを含んでよい。加えて、算術回路を縮小することは、第1積項及び第2積項を簡略化する(simplifying)ことを含んでよい。
第1積項及び第2積項を簡略化することは、ブール最小化ルール(Boolean minimisation rule)を第1積項及び第2積項に適用することによって実行されてよい。
第2プログラミング言語はC++であってよい。
第1プログラミング言語は、機械読取可能な金融コントラクトを構成するために考案されたコンピュータプログラミング言語であってよい。
コンピュータ実施される方法は、縮小算術回路を説明する多項式のセットを含む二次プログラム(quadratic program)を生成するステップを更に含んでよい。加えて、コンピュータ実施される方法は、二次プログラムの実行においてブロックチェーンネットワーク内のノードによって使用されるパラメータのセットを生成するステップを更に含んでよい。
また、プロセッサと、該プロセッサによって実行された結果として、システムに、特許請求に係る方法のいずれかを実行させる実行可能命令を含むメモリと、を含むシステムを提供することも望まれる。
また、コンピュータシステムの1つ以上のプロセッサによって実行された結果として、コンピュータシステムに、特許請求に係る方法のいずれかを少なくとも実行させる、実行可能命令を記憶している非一時的コンピュータ読取可能記憶媒体を提供することも望まれる。
本発明は、検証方法/システムとして及び/又はブロックチェーンを介したデジタル資産の交換又は移転を制御するための制御方法/システムとして説明できる。いくつかの実施態様において、デジタル資産は、暗号通貨のトークン又は一部である。以下で説明されるように、本発明はまた、ブロックチェーンネットワーク又はプラットフォームを介して動作を実行する新たな改善された有利な方法のためのセキュアな方法/システムとしても説明できる。あるいはまた、本発明は、改善されたブロックチェーンプログラミングツール又は補助を提供し得る。これは、分散された検証可能な計算を容易に又は可能にする、改善された効率的な最適化された構成を提供し得る。
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかになり、実施形態に関連して解明されるであろう。本発明の実施形態は、次に単なる例示として、添付の図面に関連して説明される:
まず、本開示の一実施形態によるブロックチェーンに関連付けられる例示のブロックチェーンネットワーク100示す図1を参照する。本実施形態では、例示のブロックチェーンネットワーク100は、ピアツーピア分散電子デバイスとして実装されるブロックチェーンノードを含み、その各々が、少なくとも部分的にノード102のオペレータ間で合意されるブロックチェーンプロトコルに従うオペレーションを実行するソフトウェア及び/又はハードウェアのインスタンスを実行する。いくつかの例において、「ノード」は、ブロックチェーンネットワークの間で分散されるピアツーピア電子デバイスを指す。ブロックチェーンプロトコルの一例がビットコインプロトコルである。
いくつかの実施形態において、ノード102は、(例えばデータセンター内のサーバによって、クライアントコンピューティングデバイス(例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン等)によって、コンピューティングリソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスによって、あるいは図10のコンピューティングデバイス1000のような任意の適切な電子クライアントデバイスによって)任意の適切なコンピューティングデバイスから構成され得る。いくつかの実施形態において、ノード102は、トランザクション104のように提案されたトランザクションを表すデータメッセージ又はオブジェクトを受け取るための入力を有する。ノードは、いくつかの実施形態では、ノードが維持する情報について、例えばトランザクション104の状態の情報についてクエリ可能である。
図1に示されるように、ノード102のいくつかは、ノード102のうちの1つ以上の他のノードに通信可能に結合される。このような通信結合は、有線又は無線通信のうちの1つ以上を含むことができる。実施形態において、ノード102は各々、ブロックチェーン内のすべてのトランザクションの「台帳」の少なくとも一部を維持する。このようにして、台帳は分散台帳となる。台帳に影響を与えるノードによって処理されるトランザクションは、台帳の完全性が維持されるように、他のノードのうちの1つ以上によって検証可能である。
どのノード102が他のどのノードと通信することができるかに関しては、メッセージが、ブロックチェーンプロトコルが転送すべきことを示すメッセージであると想定して、ノード間で渡されるメッセージが例示のブロックチェーンネットワーク100全体(又はその何らかの重要な部分)に伝搬することができるように、例示のブロックチェーンネットワーク100内のノードの各々が、ノード102のうちの1つ以上の他のノードと通信することができることで十分である。1つのそのようなメッセージは、ノード102のうちの1つ、例えばノード102Aによる、提案されたトランザクションの公開であってよく、これは、次いでパス106のようなパスに沿って伝搬するであろう。別のそのようなメッセージは、ブロックチェーンに含めるために提案された新たなブロックの公開であってよい。
一実施形態において、ノード102のうちの少なくともいくつかは、暗号問題を解決することのように複雑な計算を実行するマイニングノードである。暗号問題を解決するマイニングノードは、ブロックチェーンのための新たなブロックを作成し、その新たなブロックをノード102のうちの他のノードにブロードキャストする。ノード102のうちの他のノードは、マイニングノードの作業を確認し、確認時に、(例えばブロックチェーンの分散台帳にブロックを追加することによって)ブロックをブロックチェーン内に受け入れる。いくつかの例では、ブロックはトランザクションのグループであり、しばしば、タイムスタンプと前のブロックの「フィンガープリント」(例えばハッシュ)でマークされる。このようにして、各ブロックは前のブロックにリンクされるようになってよく、それによりブロックチェーン内のブロックをリンクする「チェーン」が生成される。実施形態において、有効なブロックは、ノード102の合意によってブロックチェーンに追加される。また、いくつかの例では、ブロックチェーンは、検証されたブロックのリストを含む。
一実施形態において、ノード102のうちの少なくともいくつかは、本開示で説明されるように、トランザクションを検証する検証ノードとして動作する。いくつかの例では、トランザクションは、デジタル資産(例えば複数のビットコイン)の所有権のプルーフと、デジタル資産の所有権/制御を受け入れる又は移転するための条件を提供するデータを含む。いくつかの例において、「アンロッキングトランザクション」は、前のトランザクションのUTXOによって示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連付けられるエンティティに再関連付けする(例えば所有権又は制御を移転する)ブロックチェーントランザクションを指す。いくつかの例において、「前のトランザクション」は、アンロッキングトランザクションによって参照されているUTXOを含むブロックチェーントランザクションを指す。いくつかの実施形態では、トランザクションは、所有権又は制御が移転され得る(「アンロックされる」)前に満たさなければならない条件で該トランザクションを妨げる「ロッキングスクリプト」を含む。
いくつかの実施形態では、ブロックチェーンアドレスは、デジタル資産の少なくとも一部の制御が移転/再関連付けされているエンティティに関連付けられる英数字の文字列である。いくつかの実施形態で実装されるいくつかのブロックチェーンプロトコルでは、エンティティに関連付けられる公開鍵とブロックチェーンアドレスとの間に1対1の対応が存在する。いくつかの実施形態において、トランザクションの検証は、ロッキングスクリプト及び/又はアンロッキングスクリプトで指定された1つ以上の条件の検証を含む。トランザクション104の検証が成功すると、検証ノードはトランザクション104をブロックチェーンに追加し、それをノード102に分配する。
図2は、本開示の一実施形態の実施例200を示す。具体的には、図2は、算術回路214に変換されたスマートコントラクト206を示しており、算術回路は、次いで算術回路最適化モジュールによって、ブロックチェーン内の作業者ノード(worker node)250がスマートコントラクト206の結果を判断するために必要なリソースを低減するために縮小される。
一実施形態において、スマートコントラクト202は、コンピューティングデバイスがコントラクトの条件を実行すること及び/又はコントラクトの条件が満たされているかどうかを判断することを可能にするフォーマットで書かれたコントラクト(contract:契約)又は合意である。スマートコントラクト202は、入力値のセットに対して評価された結果として、コンピューティングデバイスがスマートコントラクト202の結果を判断することを可能にするルール及び/又は条件のセットを含んでもよく、これは、次いで、結果に依存して、更なるアクションを実行させることができる。
本開示の目的は、エンティティが、ドメイン固有のプログラミング言語を使用してスマートコントラクト202のもののようなルールのセット及び/又は条件のセットを構成することを可能にする、プロトコルを説明することである。いくつかの例において、ドメイン固有のプログラミング言語又は「ドメイン固有言語」(DSL)は、特定の使用分野において使用するために設計されたコンピュータプログラミング言語を指す。DSLの例には、ハイパーテキストマークアップ言語(HTML)、アクチュラスモデリング言語(AML)、デジタル資産モデリング言語(DAML)、金融商品マークアップ言語(EpML)及びEmacs Lispが含まれる。
いくつかの例では、DSLとは対照的に、汎用プログラミング言語又は「汎用言語(GPL)」が広く適用可能である。汎用プログラミング言語の例には、Ada、ALGOL、アセンブリ言語、BASIC、Boo、C、C++、C#、Clojure、COBOL、Crystal、D,Dart、Elixir、Erlang、F#、Fortran、Go、Harbour、Haskell、Idris、Java(登録商標)、JavaScript(登録商標)、Julia、Lisp、Lua、Modula-2、NPL、Oberon、Objective-C、Pascal、Perl、PHP、Pike、PL/I、Python、Ring、RPG、Ruby、Rust、Scala、Simula、Swift及びTclが含まれる。本開示の実施形態において参照されることがあるC++は、命令的、オブジェクト指向及び一般的なプログラミング機能を有する汎用プログラミング言語であり、低レベルのメモリ操作のための能力も提供する。
一実施形態において、算術回路214は、スマートコントラクト202を表す有向非巡回グラフ(DAG)である。すなわち、DAGのエッジ(「ワイヤ」)は、グラフ内のノード間の入力値又は値を表してよく、ノードは、算術演算(例えば和、積等)を表してよい。したがって、算術回路214への入力値は、スマートコントラクトへの入力値に関連付けられ、実施形態では、スマートコントラクトの結果は、算術回路214の結果と一致(match)する。様々な実施形態では、一致は必ずしも等価性を必要としないことに留意されたい。例えば2つの値が等しくないが数学的に同等である場合、2つの値が一致し得る。別の例として、2つの値は、それらが共通のオブジェクト(例えば値)に対応するか又は何らかの所定の方法で補足的であるか、かつ/又はそれらが1つ以上の一致基準を満たす場合に一致し得る。一般に、一致が存在するかどうかを判断する任意の方法が使用されてよい。
一実施形態において、縮小算術回路216は、ブール最小化ルール又は他の数学的等価性ルールに従って算術回路縮小モジュール220によって縮小された算術回路の結果である。例えばブール代数では、式u+uvをuに単純に最小化することができ、同様に算術回路:
を:
に単純に最小化することができる。
したがって、算術回路縮小モジュール220は、回路を縮小又は最小化する方法について算術回路214を評価することによって算術回路214を縮小/簡略化することができ、それによって算術回路縮小モジュール220が出力する、縮小算術回路216を生成する。
一実施形態において、算術回路縮小モジュール220は実行された結果として、算術回路214をどこでどのようにして縮小できるかを決定するために、ブール最小化ルール又は他の数学的等価性ルールを用いて算術回路214内の積項を比較するオペレーションを実行することによって、縮小算術回路216を生成するハードウェア又はソフトウェアである。算術回路縮小モジュール220によって実行されるオペレーションの更なる詳細は、図7~図9の説明内に見られる。
一実施形態において、作業者ノード250は、図1のノード102及び図3の作業者ノード350と同様に、ブロックチェーンネットワーク内のノードである。すなわち、作業者ノード250は、ブロックチェーンネットワーク内の1つ以上の他のノードと通信可能に結合されたブロックチェーントランザクションを処理及び/又は検証するように構成されたコンピューティングデバイスであってよい。作業者ノード250は、いくつかの実施形態において、一組の入力値を所与として、縮小算術回路216のような算術回路の出力を決定するように設計されてよい。
実施形態において、コントラクトの実行を、信頼されていない当事者にアウトソーシングすることができるが、コントラクト実行の正当性を公的に検証することができる。実施形態において、プロトコルは、完全性、健全性及びゼロ知識を保証する暗号プリミティブを使用する。一部の例では、「完全性」は、証明者がプロトコルに正しく従う場合、検証者が出力の有効性を判断することができること指す。一部の例では、「健全性」は、証明者が、出力の確実性について検証者を欺くことができないことを指す。一部の例では、「ゼロ知識」は、検証者が、出力を生成するために使用された入力を導出できなくとも、出力を検証することができることを指す。
このようにして、非専門家のプログラマが暗号それ自体を実装する必要なく、人間にとってスマートコントラクトの書き込み及び読み取りを容易にするように設計されたDSLを使用して、スマートコントラクトを生成することができる。本開示の実施形態では、コンパイラ/インタプリタは、ユーザからのDSLソースコードをブロックチェーンで使用可能な暗号プロトコルに自動的にコンパイルする。本開示において、実施形態は、単純な算術ゲートに関して複雑なコントラクトの表現のために高度に最適化されたソリューションを提供する。この表現は、分散された検証可能な計算を提供することができる包括的なパイプラインの構築のためのソリューション又はツールと見なすことができる。
図3は、検証可能な計算のプロセス300の一例と本開示の実施形態に関与する関係者を示す図である。図3に図示されるように、検証可能な計算のプロセス300は、本開示の実施形態における検証可能な計算プロトコルにおけるステップの実行に関与する、クライアントノード340、作業者ノード350及び検証者ノード360を含んでもよい。実施形態では、クライアントノード340、作業者ノード350又は検証者ノード360のうちの1つ以上は、図1の例示的なブロックチェーンネットワーク100内のノード102のようなブロックチェーンネットワーク内のノードである。
一実施形態において、セットアップ段階は、DSLでコントラクトを書くことを含む。インタプリタは、クライアントノード340であってもよく、ソースコードを入力として取り、フィールド
からの値を担持して加算及び乗算ゲートに接続する「ワイヤ」からなる算術回路Cを生成する。算術回路自体はハードウェア回路ではなくDAGであってもよく、ワイヤはDAGのエッジであってもよいことに留意されたい。しかしながら、算術回路は、ワイヤ及び論理ゲートを有する物理回路内で具現化されてもよいと考えられる。302において、クライアントノード340は、GPLで書かれた計算Pを算術回路Cにコンパイルする。本実施形態では、クライアントノード340は、算術回路C及び入力xを作業者ノード350に供給する。
回路Cから、本開示の実施形態は、元の回路Cの完全な説明を提供する多項式のセットを含む二次プログラムQを生成することができる。次いで、二次プログラムを実行及び検証する際に、作業者ノード350及び検証者ノード360によって使用される公開パラメータが生成されてもよい。
304において、作業者ノード350は、入力xに対して回路C又は二次プログラムQを実行し、出力がyであることを主張する。いくつかの実施形態では、作業者ノード350(すなわち、証明者)は、{C,x,y}について有効なトランスクリプトを取得することが期待され;したがって、プロセス300の306において、作業者ノード350は、トランスクリプトを符号化する。いくつかの例では、{C,x,y}についての有効なトランスクリプトは、入力ワイヤに割り当てられた値がxのそれらであり、中間値がC内の各ゲートの正しいオペレーションに対応し、出力ワイヤに割り当てられた値がyであるように、回路ワイヤに値を割り当てることであり;請求された出力が正しくない(すなわち、y≠P(x))場合、{C,x,y}についての有効なトランスクリプトは存在しない。
308において、作業者ノード350は、出力yをクライアントノード340に提供する。実施形態では、公開評価鍵EK及び公開検証鍵VKは、クライアントノード340によって又はクライアントノード340から選択された秘密値sを使用して導出される。実施形態において、作業者ノード350は、これらの公開鍵を使用して、特定の入力xに対して計算を評価する。実施形態において、出力y、内部回路ワイヤの値及びEKを使用して、正当性のプルーフ(proof-of-correctness)πを生成する。プルーフπはブロックチェーン上に格納されることができ、作業者ノード350が複数の当事者と別々に対話することを必要とせずに、複数の当事者(例えば検証者ノード360)によって検証されることができる。このようにして、検証者ノード360は、310において、公開検証鍵VK及びプルーフπを使用してトランザクションを検証することができ、それによってコントラクトを検証することができる。
図4は、本開示の実施形態による、DSLで符号化されたスマートコントラクトから二次算術プログラム(QAP:quadratic arithmetic program)へのワークフローの例400を示す。具体的には、図4は、コンバータ404によってGPLコントラクト406に変換されるDSLスマートコントラクト402を示す。GPLプリコンパイラ408(プリプロセッサとしても知られる)は、GPLコントラクト406によって参照される外部ライブラリ410を組み込み、GPL前処理コントラクト412を生成する。GPL前処理コントラクト412は、QAP多項式418が導出される縮小算術回路416を生成するために最適化される算術回路414に変形される。
実施形態において、DSLスマートコントラクト402は、正確な意味を有する正式な言語で書かれたコントラクトである。実施形態において、DSLスマートコントラクト402は条件のセットを含み、DSLスマートコントラクト402の結果は、条件のセットの履行に依存する。スマートコントラクトの例は、被保険者の保険料と、保険業者による被保険者への潜在的な分配を入力として取る保険契約である。スマートコントラクトの期間中に被保険者が損失を被った場合(例えば第1条件の履行)、スマートコントラクトの実行は、保険業者に保険料を分配し、損失の分配を被保険者に分配する。他方、スマートコントラクトの期間中に被保険者が損失を被らない場合、スマートコントラクトの実行は、保険業者に保険料を分配し、潜在的な分配を保険者に返す。
一実施形態において、コンバータ404は、実行の結果として、DSLで書かれたDSLスマートコントラクト402のような条件のセットを受け取り、DSLコードをGPLコントラクト406のようなGPLソースコードに翻訳するソフトウェアプログラムである。実施形態において、GPLコントラクト406は、C++プログラムのようなGPLプログラムであり、DSLスマートコントラクト402で定義されたコントラクトを含む。
一実施形態において、GPLプリコンパイラ408は、GPLコントラクト406及び必要な外部ライブラリ410を処理してスタンドアロンGPL前処理コントラクト412を生成する、コンピュータ実行可能プログラムである。実施形態において、GPLプリコンパイラ408は、定数式を評価し、GPLコントラクト406に見られるシンボル(symbols)を登録する。
一実施形態において、外部ライブラリ410は、呼び出しによってGPLコントラクト406により利用される、事前に書かれたサブルーチン、関数、クラス、コンテナ、値及び/又は可変型のコレクションである。例えば外部ライブラリ410を呼び出すことによって、GPLコントラクト406は、機能自体を実装する必要なく、そのライブラリの機能を獲得する。
一実施形態において、GPL前処理コントラクト412は、一組の式及び演算子を含む。演算子は、算術演算子(例えば加算(+)、乗算(*)等)、比較演算子(例えば未満(<)、等しい(=)、以上(≧)等)、条件文(例えばif-then(?、:))又は論理演算子(例えばAND(&&)、OR(||)、NOT(!)、XOR
(外1)
)等を含み得る。いくつかの実施形態では、主機能は、所定の名前及びフォーマットを有するように生成される。
(外1)
)等を含み得る。いくつかの実施形態では、主機能は、所定の名前及びフォーマットを有するように生成される。
一実施形態において、算術回路414は、一組の変数に対するDAGである。一実施形態において、ゼロの入次数(indegree)を有するDAGの各ノードは、変数を表す入力ゲート(例えばxi)であり、DAGのすべての他のノードは、和ゲート(+)又は積ゲート(×)である。実施形態において、すべてのゲート(ノード)は、1の出次数(outdegree)を有し、したがって、その下にあるグラフは、有向ツリーである。実施形態において、算術回路414は、複雑性の2つの尺度、すなわち、サイズと深度を有する。いくつかの例では、算術回路の「サイズ」は、算術回路414内のゲートの数に基づく。いくつかの例では、算術回路の「深度」は、算術回路内の最も長い有向経路の長さに基づく。
算術回路414は、生成された後、縮小されてよい。ブール代数では、任意のブール関数を、最小項正規形式で表現することができる。n個の変数の関数f(x1,...,xn)では、変数の各々が1回、その自然形又は補完された形で現れる積項が、最小項と呼ばれることがある。すなわち、いくつかの例では、「最小項」は、補数演算子(‘)と結合演算子()のみを用いるn個の変数の論理式である。例えばabcd及びab’cd’は、f(a,b,c,d)の2つの最小項である。このようにして、n個の変数で2nfが存在することになる。
いくつかの例において、「インプリカント(implicant)」は、fの最小項のグループをカバーする積を指す(すなわち、積の和の積項Pは、fが値1をとる場合Pが1に等しいときはいつでも、fのインプリカントである)。例えば以下の関数:
f(a,b,c,d)=ab+bc’+d
では、ab、bc’、abc’、abc’d及びdは、fのインプリカントの例である。いくつかの例では、「プライムインプリカント(prime implicant(主項))」は、より一般的な(例えばより少ないリテラル(literals)の)インプリカントではカバーすることができないインプリカントを指す。すなわち、プライムインプリカントは、いずれかのリテラルがPから除去された場合に、fについて非インプリカントとなる積項Pである。上記の例を使用すると、abc’dはプライムインプリカントではない。なぜなら、リテラルを除去してプライムにすることができるからである(abc’dをプライムインプリカントにするためには、a=1及びb=1及びC=0及びd=1の場合にのみ、f(a,b,c,d)は1に等しくなければならない)。
f(a,b,c,d)=ab+bc’+d
では、ab、bc’、abc’、abc’d及びdは、fのインプリカントの例である。いくつかの例では、「プライムインプリカント(prime implicant(主項))」は、より一般的な(例えばより少ないリテラル(literals)の)インプリカントではカバーすることができないインプリカントを指す。すなわち、プライムインプリカントは、いずれかのリテラルがPから除去された場合に、fについて非インプリカントとなる積項Pである。上記の例を使用すると、abc’dはプライムインプリカントではない。なぜなら、リテラルを除去してプライムにすることができるからである(abc’dをプライムインプリカントにするためには、a=1及びb=1及びC=0及びd=1の場合にのみ、f(a,b,c,d)は1に等しくなければならない)。
しかしながら、理解されるように、a、b及びc’が除去される場合(すなわち、d=1の場合)、f(a,b,c,d)は1に等しい可能性がある。同様に、c’とdが除去される場合(すなわち、ab=1の場合)、f(a,b,c,d)は1に等しい可能性がある。同様に、aとdが除去される場合(すなわち、bc’=1の場合)、f(a,b,c,d)は1に等しい可能性がある。ブール項からリテラルを除去するプロセスは「展開(expansion)」と呼ばれることがある。リテラルを1つ展開することは、項が真になる入力組合せの数を2倍にする。例えばfのカバーを変更することなく、abc’をab又はbc’に展開することができる。
ブール関数のすべてのプライムインプリカントの和は、「ブレーク正規形式(Blake canonical form)」と呼ばれることがある。他のプライムインプリカントの組合せがカバーできない関数の出力をカバーするプライムインプリカントは、「必須プライムインプリカント(essential prime implicants(必須主項))」と呼ばれることがある。n個の入力変数を有する論理関数のプライムインプリカントの数は、3n/nと同じくらい大きいものとすることができる。最小プライムインプリカントの抽出は、非決定性多項式時間完全(NP-complete)問題のクラスに属することが知られている。以下の方法は、クワイン・マクラスキー法(Quine-McCluskey algorithm)を使用して、プライムインプリカントのチャートを構築する一例を示す。
マクラスキーによるMinimization of Boolean Functions(1956)内でみられるクワイン・マクラスキー法は、ブール関数のプライムインプリカントの完全なリストを返す。一実施形態では、返されたプライムインプリカントを使用してプライムインプリカントテーブルを構築し、これは、関数の必須プライムインプリカントの抽出のために1つ以上のアルゴリズムへの入力として使用され得る。縮小されるブール関数f(x1,...,xn)を次のように表すことができる:
したがって、vの各最小項を、xi値に依存して自然又は補完入力の積として表すことができる。最小項のペアは、これらの表現が、1桁の数の変化(single digit changing)によって変わる場合に組み合わせることができる。それ以上組み合わせることができない項はプライムインプリカントである。必須プライムインプライアントテーブルは、既約(irreducible)のプライムインプリカントのリストを使用して構築される。
一例において、n=4、M=6及びv={4,8,10,11,12,15}のxxf(x1,...,xn)を所与とすると、プライムインプリカントを抽出してプライムインプリカントテーブルを生成するクワイン・マクラスキー法は、以下のように現れる:
したがって、fを、以下の最小項の和として表すことができる:
・m4=f(0,1,0,0)=a’bc’d’
・m8=f(1,0,0,0)=ab’c’d’
・m10=f(1,0,1,0)=ab’cd’
・m11=f(1,0,1,1)=ab’cd
・m12=f(1,1,0,0)=abc’d’
・m15=f(1,1,1,1)=abcd
・m4=f(0,1,0,0)=a’bc’d’
・m8=f(1,0,0,0)=ab’c’d’
・m10=f(1,0,1,0)=ab’cd’
・m11=f(1,0,1,1)=ab’cd
・m12=f(1,1,0,0)=abc’d’
・m15=f(1,1,1,1)=abcd
4つの入力の場合、最小項は[m0,m15]の範囲内であり、この場合、m0=f(0,0,0,0)、かつm15=(1,1,1,1)である。fについての積式の正規和は以下のとおりである:
f(a,b,c,d)=a’bc’d’+ab’c’d’+ab’cd’+ab’cd+abc’d’+abcd
f(a,b,c,d)=a’bc’d’+ab’c’d’+ab’cd’+ab’cd+abc’d’+abcd
最小項は、1桁の数が変化するときに組み合わされ、対応する入力は「-」に設定される。この結果、サイズ-2のインプリカント(size-2 implicants)となる:
m4,12=f(-,1,0,0) [既約]
m_(8,9)=f(1,0,0,-)
m8,10=f(1,0,-,0)
m8,12=f(1,-,0,0)
m9,11=f(1,0,-,1)
m10,11=f(1,0,1,-)
m10,14=f(1,-,1,0)
m12,14=f(1,1,-,0)
m11,15=f(1,-,1,1)
m14,15=f(1,1,1,-)
m4,12=f(-,1,0,0) [既約]
m_(8,9)=f(1,0,0,-)
m8,10=f(1,0,-,0)
m8,12=f(1,-,0,0)
m9,11=f(1,0,-,1)
m10,11=f(1,0,1,-)
m10,14=f(1,-,1,0)
m12,14=f(1,1,-,0)
m11,15=f(1,-,1,1)
m14,15=f(1,1,1,-)
サイズ-2のインプリカントのいくつかは既約でないことがあるが、再び組み合わされよく、結果としてサイズ-4のインプリカントとなる:
m8,9,10,11=f(1,0,-,-) [既約]
m8,10,12,14=f(1,-,-,0) [既約]
m10,11,14,15=f(1,-,1,-) [既約]
m8,9,10,11=f(1,0,-,-) [既約]
m8,10,12,14=f(1,-,-,0) [既約]
m10,11,14,15=f(1,-,1,-) [既約]
今回は、size-4のインプリカントのすべてが既約である。既約のインプリカントのリストは、ブール関数のプライムインプリカントに対応する。最後のステップとして、必須プライムインプリカントテーブルが、プライムインプリカントのリストを使用して構築されてよい。プライムインプリカントテーブルの例は以下のテーブル1に示される:
表中の「ティック(tick)」は、真であるために、所与のインデックスベクトル、すなわち、所与の入力シーケンスを必要とするプライムインプリカントに対応する。vの列が1つのティックのみを有する場合、対応する最小項は1つのプライムインプリカントによってのみカバーされ得る。そのようなプライムインプリカントは、fにとって必須である。
一実施形態において、縮小算術回路416は、縮小又は最小化された有向非巡回グラフ(DAG)であり、これは、一組の入力を所与として、DSLスマートコントラクト402で指定されたもののような条件のセットの結果を決定するために使用することができる。いくつかの実施態様において、縮小算術回路416は、最小化された(すなわち、最小次数まで縮小された)算術回路である。いくつかの実施形態では、最も最適な算術回路は、必ずしも最小の算術回路ではなくてよく(例えば特定のより大きな算術回路は、回路内の算術演算の数及びタイプに応じて、より大きな算術回路よりも迅速に評価され得る)、そのような実施形態では、縮小算術回路416は、(例えば最大速度、より少ないメモリ使用量、最も効率的なプロセッサの利用等について)最適化されているが、必ずしも最小化されていない算術回路である。
一実施形態において、QAP多項式418は、元の算術回路(例えば図4の算術回路414)の完全な説明を提供する数式で表現された変数及び係数を含む1つ以上の式である。実施形態において、QAP多項式の多項式は、例えばGennaro,R.等によるQuadratic Span Programs and Succint NIZKs without PCPs(2013)で説明されているように、算術回路のルートにおけるそれらの評価に関して定義される。実施形態において、QAP多項式は、スマートコントラクトの表現として、ブロックチェーントランザクションのロッキングスクリプトに符号化される。実施形態では、ロッキングスクリプトは、実行時に、一組のパラメータ値(例えばロッキングスクリプトの実行の結果として)を受け取り、これらのパラメータ値は、QAP多項式に変数として入力され、スマートコントラクトの結果を決定させる。
実施形態において、GPLプリコンパイラ408は、GPL前処理コントラクト412を生成する。GPL前処理コントラクト412は、算術ゲートから構成される算術回路であってよい。しかしながら、条件付き及びフロー制御ステートメントのために、複雑な算術回路も論理サブモジュールを埋め込むことに注意されたい。実施形態では、これらのサブモジュールは、やはり算術回路に変換されるが、図5に見られるように、1ビット幅のゲート接続によって特徴付けられる。
図5は、本開示の実施形態の論理サブモジュールを含む算術回路500の例示的なモデルを示す。図5に図示されるように、算術回路500は、1ビット入力502と、入力のグループ504を含んでよく、これらの入力は、論理サブモジュール508A~508B及び/又はグループ化されていない算術ゲート506A~506Dに渡されて出力510を生成する。図5の太い線は、1ビット幅のワイヤ(例えばバス)のグループを表し、細い線は、1ビット・ビットワイヤを表す。論理及び算術1ビット幅回路は、二重である(例えば少なくとも2つの方法、すなわち、和の積又は積の和として表現することができる)ので、論理回路縮小を、算術回路500内の論理サブモジュール508A~508Bに適用することができる。
論理サブモジュール*508A~508Bの各々は、算術回路内のノードのセットの適切な(proper)(厳密な)サブセットを含んでもよい。言い換えると、論理サブモジュールは、算術回路の全体を包含しないことがある。さらに、いくつかの実施形態では、論理サブモジュール*508A~508Bは交わっていない、すなわち、このような実施形態では、論理サブモジュール*508A~508Bは、いずれの内部ゲートも共有しないであろう。さらに、このような実施形態では、論理サブモジュール508A~508Bはいずれの内部ゲートも共有しないため、縮小手順を並列化して(例えば論理サブモジュール508A~508Bの各々を並列に縮小することができる)オペレーションの時間複雑性を低減することができる。
一実施形態において、1ビット入力502は、1又は0のいずれかを表す値を伝達することができるワイヤであり、一方、入力のグループ504は、複数の1ビットワイヤを表す。複雑な算術回路は、条件付き及びフロー制御ステートメントから導出される論理サブモジュールを埋め込んでよい。実施形態において、これらの論理サブモジュールは算術回路にも変換されるが、図示の論理サブモジュール508A~508Bのような1ビット幅のゲート接続によって特徴付けられてよい。いくつかの実施形態において、論理サブモジュール508A~508B内のワイヤは、1ビット幅のみである。
論理及び算術1ビット幅回路は二重であるため、論理縮小は、論理サブモジュール508A~08Bにも適用され得る。さらに、論理サブモジュール508A~508Bは、内部ゲートを共有しないため、縮小手順は、算術回路500の時間複雑性を低減するために並列化されてもよく;例えば別個のプロセッサコアを割り当てて論理サブモジュール508A~508Bの各々に対して論理縮小を行ってもよい。一実施形態では、計算的に最適化されたヒューリスティックを利用して、論理縮小のために、論理サブモジュール508A~08Bを異なる処理コアに割り当ててもよい。計算的に最適化されたヒューリスティックは、計算リソースの使用を最適化するように設計されたヒューリスティックであり得る。使用され得る計算的に最適化されたヒューリスティックの一例は、最長処理時間(LPT)貪欲法である。このようなヒューリスティックでは、論理サブモジュール508A~508Bが処理時間によってソートされ、それまでで最も早い終了時間を有するマシンに割り当てられる場合、スケジューラは各トランザクションの計算負荷のバランスをとろうとする。更なる詳細は、以下の図7の説明でみられ得る。対照的に、実施形態では、グループ化されていない算術ゲート506A~506Dは、該グループ化されていない算術ゲート506A~506Dが入力のグループ504等の1ビットワイヤのグループによって共有されるため、並列に縮小され得ない。実施形態では、縮小はゲートの数に適用されるが、入力の数(例えば1ビット入力502及び入力のグループ504)は同じままであることに留意されたい。
一実施形態において、出力510は、算術回路500に従って入力502及び504に対して実行されオペレーションの結果である。いくつかの実施態様において、結果は、真又は偽の値である。他の実施形態では、結果は1つ以上の1ビット値のセットである。他の実施形態において、結果は、任意の他の値又は算術回路によってサポートされる値であってよい。
上述のように、実施形態において、クワイン・マクラスキー法は、ブール関数fのプライムインプリカントの完全なリストを返すことができる。さらに、PetrickによるA Direct Determination of the Irredundant Forms of a Boolean Function from the Set of Prime Implicants(1956)で説明されている方法(Petrick法)を用いて、下述されるような必須プライムインプリカントの構成としてfを表すために、プライムインプリカントの数を縮小することができる。
プライムインプリカントテーブル(例えばプライムインプリカントテーブル1)で表されるブール関数fを、補助ブール関数(auxiliary Boolean function)f*を用いて二重形式で表すことができる。補助ブール関数f*は、プライムインプリカントテーブルの列のすべてがカバーされるときに真になる。したがって、f*を、各インデックスベクトルviに寄与する(すなわち、fの各出力に寄与する)プライムインプリカントの和σiの積として表すことができる:
例えばテーブル1内のプライムインプリカントのσi項のリストは、次のようになる:
σ0=σ(v0=4)=bc’d’
σ1=σ(v1=8)=ab’+ad’
σ2=σ(v2=10)=ab’+ad’+ac
σ3=σ(v3=11)=ab’+ac
σ4=σ(v4=12)=bc’d’+ad’
σ5=σ(v5=15)=ac
σ0=σ(v0=4)=bc’d’
σ1=σ(v1=8)=ab’+ad’
σ2=σ(v2=10)=ab’+ad’+ac
σ3=σ(v3=11)=ab’+ac
σ4=σ(v4=12)=bc’d’+ad’
σ5=σ(v5=15)=ac
したがって、二重関数f*は:
f*=(bc’d’)(ab’+ad’)(ab’+ad’+ac)(ab’+ac)(bc’d’+ad’)(ac)
となる。
f*=(bc’d’)(ab’+ad’)(ab’+ad’+ac)(ab’+ac)(bc’d’+ad’)(ac)
となる。
ziをf*の個々の最小項で表す場合、関数を:
f*=z0(z1+z2)(z1+z2+z3)(z1+z3)(z0+z2)z3
と書き直すことができる。
f*=z0(z1+z2)(z1+z2+z3)(z1+z3)(z0+z2)z3
と書き直すことができる。
ブール関数は、特定のブール・ルール、例えば以下に示されるようなルールを使用して更に簡略化できる:
1.u+uv=u
2.u+u’v=u+v
3.(u+v)(u+w)=u+vw
1.u+uv=u
2.u+u’v=u+v
3.(u+v)(u+w)=u+vw
他のブール簡略化ルールが存在し、より少ない、より多い又は異なるブール簡略化ルールが本開示の実施形態で使用され得ることは、本開示の範囲内であると考えられることに留意されたい。しかしながら、上記のルールを使用して、f*に対して以下の簡略化を実行することができる:
(z1+z2)(z1+z3)=z1+z2z3 (ルール3)
z0(z0+z2)=z0 (ルール1)
(z1+z2)(z1+z3)=z1+z2z3 (ルール3)
z0(z0+z2)=z0 (ルール1)
いくつかの更なる簡略化をf*に適用することにより、f*は、以下の縮小を受け得る:
f*=z0z3(z1+z2z3)(z1+z2+z3)
f*=z0z3(z1z1+z1z2+z1z3+z1z2z3+z2z2z3+z2z3z3)
f*=z0z3(z1+z1z2+z1z3+z1z2z3+z2z3+z2z3)
f*=z0z3(z1+z2z3)
f*=z0z1z3+z0z2z3
f*=z0z3(z1+z2z3)(z1+z2+z3)
f*=z0z3(z1z1+z1z2+z1z3+z1z2z3+z2z2z3+z2z3z3)
f*=z0z3(z1+z1z2+z1z3+z1z2z3+z2z3+z2z3)
f*=z0z3(z1+z2z3)
f*=z0z1z3+z0z2z3
したがって、関数*を、z0z1z3及びz0z2z3によってカバーすることができ、両方の項は最小項の最小項数を含む(異なる二重関数f*=z0z1z3+z0z2を考えると、項z0z2は、最小項の最小数なので、fを表すために使用されることになる)。したがって、fを、
f=z0+z1+z3=bc’d’+ab’+ac
あるいは、
f=z0+z2+z3=bc’d’+ad’+ac
と簡略化することができる。
f=z0+z1+z3=bc’d’+ab’+ac
あるいは、
f=z0+z2+z3=bc’d’+ad’+ac
と簡略化することができる。
このようにして、補助ブール関数f*を、fの各出力に寄与するプライムインプリカントの和σiの積として表すことができる:
ここで、Mは、fを表すために使用される最小項の数であり、項σiは、以下のように表される:
したがって、zikは、和σiに寄与するk番目のプライムインプリカントを表す:
σ1=z11+z12+・・・+z1|z1|
σ2=z21+z22+・・・+z2|z2|
・・・
σM=zM1+zM2+・・・+zM|zM|
σ1=z11+z12+・・・+z1|z1|
σ2=z21+z22+・・・+z2|z2|
・・・
σM=zM1+zM2+・・・+zM|zM|
図6は、本開示の実施形態における縮小論理サブモジュールの例600を示す。具体的には、図6は、4つのプロセッサコア622を使用して8つの論理サブモジュール608A~608Hを処理するシステムの例示的な例を示す。例600では、LPT貪欲法が使用され、目標は、システムのプロセッサ使用を最適化するために、プロセッサコアのすべてが可能な限りほぼ同じ時間に処理を終了することである。最初に、論理サブモジュール608A~608Hは、互いに対する論理サブモジュール608A~608Hの処理時間の推定値として、複雑度(例えば論理サブモジュール608A~608H内の論理ゲートの数)によって順序付けられてよい。しかしながら、論理サブモジュール608A~608Hの処理時間を推定する他の方法を使用してもよいと考えられる。
例600では、最も長い推定処理時間を有する最初の4つの論理サブモジュール608A~608Dは、プロセッサコア622間でラウンドロビン又は擬似ランダム方式で分配されてもよい。分かるように、コア4によって処理されている論理サブモジュール608Dは、4つのうちの最小の推定処理時間を有し、最初に終了する。その結果、コア4は、論理サブモジュール608Eである、5番目に長い推定処理時間を有する未処理論理サブモジュールが割り当てられる。コア3は、次に処理論理サブモジュール608Cを終了し、6番目に長い推定処理時間を有する論理サブモジュールである、論理サブモジュール608Fに割り当てられる。コア2は、処理論理サブモジュール608Bを終了し、論理サブモジュール608Gを受け取る。最後に、コア1は、最も長い推定処理時間を有する論理サブモジュールの処理を終了し、8つの論理サブモジュール608A~608Hのうち最も短い推定処理時間を有する論理サブモジュールである、論理サブモジュール608Hを受け取る。例600に見られるように、4つのプロセッサコア622のすべてが、8つの論理サブモジュール608A~608Hをほぼ同じ時間に処理を終了し、結果としてプロセッサのアイドル時間を短縮する。
図7は、本開示の一実施形態のプライムインプラント縮小の例700を示す。具体的には、図7は、例えば図2の算術回路縮小モジュール220によって、上述のステップに従って簡略化されたプライムインプリカントσ1~σ5のセットを示している。例えば積項σiをリスト{σ1,...,σM}と考える。実施形態において、各ステップにおいて、リストの2つのメンバーが比較され(「左」及び「右」メンバーと呼ばれる)、可能であれば簡略化される。例700では、時間t1において、左メンバー702A(σ1)が右メンバー704A(σ2)とペアになり、f*の積項は、上記でリストされたもののようなブール簡略化ルールを使用して簡略化される。左メンバー702A及び右メンバー704Aを簡略化することができる場合、左メンバーは、新たな項σ12で置き換えられることになる。しかしながら、例700では、左メンバー702A及び右メンバー704Aを更に簡略化することができないことが分かる。
その後、時間t2において、左メンバー702B(σ1)は、右メンバー704B(σ3)と連結され、ブール簡略化ルールに従って処理される。この場合、例700では、左メンバー702B及び右メンバー704Bをσ13に簡略化できることが分かる。したがって、時間t3において、左メンバー702C(σ13)が右メンバー704C(σ4)と比較される。例700では、左メンバー702C及び右メンバー704Cを更に簡略化することができない。
同様に、時間t4において、左メンバー702D及び右メンバー704D(σ5)も同様に、更に簡略化することはできない。すべての右メンバーがチェックされた後、左メンバーは、リスト内のその次のメンバーに設定され、例700では、次のメンバーはσ2である。したがって、時間t5において、左メンバー702E(σ2)は、右メンバー704E(σ4)と連結され、ブール簡略化ルールに従って、それらはσ24に簡略化され、左メンバーの値となる。したがって、時刻t6において、左メンバー702F(σ24)は、右メンバー(σ5)と連結され、処理されて、σ245に簡略化される。このプロセスは、時点t7で見られるように、それ以上のチェックが利用できなくなったときに終了する。
実施形態において、簡略化ステップの数は、M(M-1)/2によって上限設定される。実施形態では、ペア(左、右)の各簡略化ステップは、以下のオペレーションの実行からなる:
1.ルール1に従って(左、右)を簡略化するよう試み、
2.ルール2に従って(左、右)を簡略化するよう試み、
3.ルール3に従って(左、右)を簡略化するよう試みる。
1.ルール1に従って(左、右)を簡略化するよう試み、
2.ルール2に従って(左、右)を簡略化するよう試み、
3.ルール3に従って(左、右)を簡略化するよう試みる。
実施形態において、ルール1、ルール2及びルール3におけるu項は、(左、右)のペアの共通部分を表す。実施形態における左右メンバーの加数の間のクロスチェック(交差)は、特有の実装(ナイーブ又はソートされたリスト)に応じて、例えば時間複雑性o(n2)又はo(nlogn)によって特徴付けられる。
pの値は、成功した簡略化オペレーションの数に依存することに留意されたい。実施形態において、項
の各々は、実際には、プライムインプリカントziの積であり、関数f*は、プライムインプリカントの最小数を含むσ*内の最小項
によってカバーされ得る。
ここで、
であり、関数
は、
内に含まれるプライムインプリカントの数
をカウントする。最終的に二重関数fは以下のように表わされてよい:
ここで、
実施形態において、図5の論理サブモジュール508A~508Bのような個々の論理サブモジュールは、より高速な処理のために、異なる処理コアによって並列に簡略化されてよいと考えられる。そのような実施形態では、計算的に最適化されたヒューリスティックをスケジューラによって実行して、LPT貪欲法と呼ばれる、論理縮小段階のための異なる処理コアに個々の論理サブモジュールを割り当てる。ジョブが処理時間によってソートされ、次いで、それまでで最も早い終了時間のマシン(処理コア)に割り当てられる場合、スケジューラは、処理されている各論理サブモジュールに対して計算負荷をバランスさせようとする。
実施形態において、論理サブモジュール(Si)の初期ゲートgiの数は、Siを減らすために必要な期待される時間の適切なインジケータであると推定される(例えばゲートの数が多いほど、期待される処理時間は長くなる)。したがって、減らすべきN個のコアとn個のサブモジュールを有するマシンを所与とすると、サブモジュールSiは、それらのgi値(1≦i≦n)によってソートされ、次いで、所与の時間t’において最も低い集約Gj(t’)メトリックでコアjのリスト{listj}に割り当てられる:
あるいは、サブモジュールSiは、gi値を考慮することなく、ラウンドロビン方式で処理コアに割り当てられてよい。例えばi(moduloN)=jのとき、Siをコアjに割り当てることができる。
図8は、様々な実施形態による、DSLコントラクトを縮小算術回路に変形するためのプロセス800の一例を示すフローチャートである。プロセス800の一部又はすべて(又は説明された任意の他のプロセス、あるいはこれらのプロセスの変形及び/又は組合せ)を、実行可能な命令及び/又は他のデータで構成される1つ以上のコンピュータシステムの制御下で実行することができ、1つ以上のプロセッサ上で集合的に実行する実行可能な命令として実装してよい。実行可能な命令及び/又は他のデータを、非一時的コンピュータ読取可能な記憶媒体(例えば磁気媒体、光媒体又はフラッシュ媒体に永続的に記憶されるコンピュータプログラム)に記憶することができる。
例えばプロセス800の一部又はすべてを、1つ以上のコンピューティングデバイスによって(例えばデータセンター内のサーバによって、クライアントコンピューティングデバイスによって、コンピューティングリソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスによって又は図10のコンピューティングデバイス1000のような任意の適切な電子クライアントデバイスによって)実行することができる。プロセス800は、DSLで書かれたスマートコントラクトがGPLに変換され、予めコンパイルされ、算術回路に変形される一連の動作を含む。算術回路は、本開示及び出力で説明される技術に従って縮小される。
802において、プロセス800を実行するシステムは、DSLで書かれたスマートコントラクトを取得する。上述のように、DSLは、特定のフィールドで使用するために設計されたコンピュータプログラミング言語であってよい。実施形態において、スマートコントラクトのような金融商品を構成するために考案されたDSLが使用されてよい。このようなDSLは、平均的なユーザにとってスマートコントラクトをより容易に書き込み、読み取ることができるものにし、非専門家のプログラマが、いずれの暗号も実装することなく、スマートコントラクトを書き込むことを可能にし得る。
804において、プロセス800を実行するシステムは、スマートコントラクトをGPLに変換する。このようにして、DSLスマートコントラクトは、ブロックチェーンで使用するために、暗号プロトコルにコンパイル/解釈することができる一般的な形式に変換される。実施形態において、GPLはC++のソースコードであるが、他のGPL言語を使用してもよいと考えられる。
806において、GPLソースコードは予めコンパイルされ、これは、ライブラリファイル及び/又は他の依存関係を予めコンパイルされたソースコードに取り込んでよい。また、予めコンパイルするプロセスは、変数名を難読化してもよく、これは、ブロックチェーンにコミットした後で、スマートコントラクトの性質を公から隠すという利点を有し得る。
808において、プロセス800を実行するシステムは、例えば様々なコマンド、条件文、変数、算術演算を算術アルゴリズムに変形することによって、予めコンパイルされたソースコードを算術回路に変換する。この算術アルゴリズムは、図5に示されているものと同様に、有向巡回グラフとして表現され得る。
810において、プロセス800を実行するシステムは、808において生成された算術アルゴリズムに対して縮小プロセスを実行する。縮小プロセスは、図9のプロセス900と同様であってもよい。この縮小プロセスの結果、図1のノード102のようなブロックチェーンノードによってより効率的に処理され得る、より小さく簡略化された算術アルゴリズムを得ることができる。
812において、プロセス800を実行するシステムは、縮小算術回路を出力する。いくつかの実施形態では、システムは、縮小回路を図4のQAP多項式418のようなQAP多項式に変形する別のプロセスに、縮小回路を提供する。他の実施形態では、システムは、縮小回路を、将来の使用のために、データストア又は他の記憶リソースに提供する。更に他の実施形態では、システムは、例えばユーザインタフェースのディスプレイを通じて、ユーザインタフェースを介して縮小回路を元のDSLコントラクトの(例えばそれによって作成又は影響を受けるエンティティ)1つ以上のエンティティに提供する。802~812で実行される1つ以上の動作は、並列を含め、様々な順序及び組合せで実行されてよいことに留意されたい。
図9は、様々な実施形態による、予めコンパイルされたGPLスマートコントラクトの算術回路縮小のプロセス900の一例を示すフローチャートである。プロセス900(又は説明される任意の他のプロセス、あるいはこれらのプロセスの変形及び/又は組合せ)の一部又はすべてを、実行可能な命令及び/又は他のデータで構成される1つ以上のコンピュータシステムの制御下で実行することができ、1つ以上のプロセッサ上で集合的に実行する実行可能な命令として実装され得る。実行可能な命令及び/又は他のデータを、非一時的なコンピュータ読取可能記憶媒体(例えば磁気媒体、光媒体又はフラッシュ媒体に永続的に記憶されたコンピュータプログラム)に記憶することができる。
例えばプロセス900の一部又はすべてを、1つ以上のコンピューティングデバイスによって(例えばデータセンター内のサーバによって、クライアントコンピューティングデバイスによって、コンピューティングリソースサービスプロバイダの分散システム内の複数のコンピューティングデバイスによって又は図10のコンピューティングデバイス1000のような任意の適切な電子クライアントデバイスによって)実行することができる。例えばプロセス900は、図2の算術回路縮小モジュール220を実行した結果として実行されてよい。プロセス900は、算術論理回路のプライムインプリカントを決定し、和の積として表し、積項の各ペアを論理ルールに対して比較して積項を簡略化することができるかどうかを判断し、すべてのペアを簡略化した後に、算術回路を縮小形式で出力する、一連の動作を含む。プロセス900の動作は、図8の810の動作について拡張する。
902において、プロセス900を実行するシステムは、算術回路を取得する。算術回路は、一組の最小項から構成されてよい。実施形態において、取得される算術回路は、予めコンパイルされたGPLソースコードから、例えば図4のGPL前処理コントラクト412等から変形されてよい。実施形態において、取得された算術回路はスマートコントラクトを表す。いくつかの実施態様において、スマートコントラクトは、DSLフォーマットで以前に書かれ、GPLフォーマットに変換された。
904において、プロセスを実行するシステムは、図4に関連して上述した方法のように、算術論理回路のプライムインプリカントを分離(isolate)する。すなわち、システムは、算術回路の最小項のセットからインプリカントのセットを決定することができる。システムは、インプリカントのセットのうちのどのメンバーが、算術回路のプライムインプリカントのセット(すなわち、任意のリテラルが除去された場合に非インプリカントとなる積項)を構成するかを決定してよい。
906において、プライムインプリカントのセットは、例えば図5に関して上述したように、プライムインプリカントの和σiの積として扱われてよい。908において、プロセス900を実行するシステムは、積項の第1ペアσLとσRを比較して、910において、図7に関して説明したように、ブール論理ルールに従ってペアを簡略化できるかどうかを判断する。簡略化できない場合、システムは914に進む。そうでなはく、簡略化できる場合、システムは、912のペアを結合して簡略化し、次いで、システムは914に進む。
914において、プロセス900を実行するシステムは、積項のすべてのペアが比較され、既約であることがわかったかどうかを判断する。積項のすべてのペアがそうされていない場合、システムは次いで908に戻り、積項の次のペアを比較する。さもなければ、916において、システムは、縮小された積項を、縮小算術回路である積の和として出力する。図8の812に関連して上記したように、システムは、縮小算術回路を、更なる処理のために別のプロセスに、データストアに、データファイルに又はユーザインタフェースに出力してよい。902~916で実行される動作のうちの1つ以上が、並列を含め、様々な順序及び組合せで実行されてよいことに留意されたい。
開示される実施形態を説明する文脈において、別段の規定がない限り、「命令」が通常単独では実行しない動作(例えばデータの送信、計算等)を実行する実行可能な命令(コード、アプリケーション、エージェント等とも呼ばれる)に関する表現の使用は、命令が機械によって実行されていることを意味し、それによって、機械に指定された動作を実行させる。
図10は、本開示の少なくとも1つの実施形態を実施するために使用することができるコンピューティングデバイス1000の例示的な簡略化されたブロック図である。様々な実施形態において、コンピューティングデバイス1000を使用して、上記で図示及び説明されたシステムのいずれかを実装することができる。例えばコンピューティングデバイス1000は、データサーバ、ウェブサーバ、ポータブルコンピューティングデバイス、パーソナルコンピュータ又は任意の電子コンピューティングデバイスとして使用するために構成され得る。図10に図示されるように、コンピューティングデバイス1000は、実施形態において、バスサブシステム1004を介して複数の周辺サブシステムと通信し、動作可能に結合される1つ以上のプロセッサ1002を含むことができる。いくつかの実施形態において、これらの周辺サブシステムは、メモリサブシステム1008及びファイル/ディスクストレージサブシステム1010を含むストレージサブシステム1006と、1つ以上のユーザインタフェース入力デバイス1012と、1つ以上のユーザインタフェース出力デバイス1014と、ネットワークインタフェースサブシステム1016を含む。このようなストレージサブシステム1006は、情報の一時的又は長期的な記憶のために使用され得る。
いくつかの実施形態において、バスサブシステム1004は、コンピューティングデバイス1000の様々な構成要素及びサブシステムが、意図されるとおりに互いに通信することを可能にする機構を提供する。バスサブシステム1004は、単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態は、複数のバスを利用する。いくつかの実施形態では、ネットワークインタフェースサブシステム1016は、他のコンピューティングデバイス及びネットワークへのインタフェースを提供する。ネットワークインタフェースサブシステム1016は、いくつかの実施形態では、コンピューティングデバイス1000からデータを受け取り、他のシステムにデータを送信するためのインタフェースとして機能する。いくつかの実施態様において、バスサブシステム1004は、詳細、検索語等のようなデータを通信するために利用される。
いくつかの実施形態において、ユーザインタフェース入力デバイス1012は、キーボード等の1つ以上のユーザ入力デバイス;一体型マウス、トラックボール、タッチパッド又はグラフィックスタブレット等のポインティングデバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;音声認識システム、マイクロフォン等のオーディオ入力デバイス;及び他のタイプの入力デバイスを含む。一般に、「入力デバイス」という用語の使用は、情報をコンピューティングデバイス1000に入力するためのあらゆる可能なタイプのデバイス及び機構を含むように意図される。いくつかの実施形態において、1つ以上のユーザインタフェース出力デバイス1014は、ディスプレイサブシステム、プリンタ又はオーディオ出力デバイス等の非視覚的ディスプレイ等を含む。いくつかの実施形態において、ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)や発光ダイオード(LED)ディスプレイ、投影装置等のフラットパネルデバイス又は他のディスプレイデバイスを含む。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス1000からの情報を出力するためのあらゆる可能なタイプのデバイス及び機構を含むように意図される。1つ以上のユーザインタフェース出力デバイス1014を使用して、例えばユーザインタフェースを提示し、そのような対話が適切であり得るときに、説明されたプロセス及びその変形を実行するアプリケーションとのユーザ対話を容易にすることができる。
いくつかの実施形態において、ストレージサブシステム1006は、本開示の少なくとも1つの実施形態の機能を提供する基本プログラミング及びデータ構成体を記憶するためのコンピュータ読取可能記憶媒体を提供する。アプリケーション(プログラム、コードモジュール、命令)は、いくつかの実施形態において1つ以上のプロセッサによって実行されるとき、本開示の1つ以上の実施形態の機能を提供し、実施形態においては、ストレージサブシステム1006に記憶される。これらのアプリケーションモジュール又は命令を、1つ以上のプロセッサ1002によって実行することができる。様々な実施形態において、ストレージサブシステム1006は更に、本開示に従って使用されるデータを記憶するためのリポジトリを提供する。いくつかの実施形態では、ストレージサブシステム1006は、メモリサブシステム1008及びファイル/ディスクストレージサブシステム1010を含む。
実施形態において、メモリサブシステム1008は、複数のメモリ、例えばプログラム実行中の命令及びデータの格納のためのメインランダムアクセスメモリ(RAM)1018及び/又は固定命令を格納することができる読取専用メモリ(ROM)1020を含む。いくつかの実施形態において、ファイル/ディスクストレージサブシステム1010は、プログラムファイル及びデータファイルのための非一時的な永続的(不揮発性)ストレージを提供し、ハードディスクドライブ、関連する取り外し可能媒体とともにフロッピーディスクドライブ、コンパクトディスク読取専用メモリ(CD-ROM)ドライブ、光学ドライブ、取り外し可能媒体カートリッジ又は他の同様の記憶媒体を含むことができる。
いくつかの実施形態において、コンピューティングデバイス1000は、少なくとも1つのローカルクロック1024を含む。少なくとも1つのローカルクロック1024は、いくつかの実施形態では、特定の開始日から発生したティックの数を表すカウンタであり、いくつかの実施形態では、コンピューティングデバイス1000内に一体的に配置される。様々な実施形態では、少なくとも1つのローカルクロック1024は、特定のクロックパルスにおいてコンピューティングデバイス1000のためのプロセッサ及びそこに含まれるサブシステム内でデータ転送を同期させるために使用され、コンピューティングデバイス1000と、データセンター内の他のシステムとの間の同期オペレーションを調整するために使用され得る。別の実施形態では、ローカルクロックは、プログラム可能な間隔のタイマである。
コンピューティングデバイス1000は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション又は以下に説明される任意の他のデバイスを含む、様々なタイプのいずれかとすることができる。加えて、コンピューティングデバイス1000は、いくつかの実施形態では、1つ以上のポート(例えばUSB、ヘッドフォンジャック、ライトニングコネクタ等)を通してコンピューティングデバイス1000に接続することができる別のデバイスを含むことができる。実施形態において、このようなデバイスは、光ファイバコネクタを受け入れるポートを含む。したがって、いくつかの実施形態において、このデバイスは、光信号を、処理のためにデバイスをコンピューティングデバイス1000に接続するポートを通して伝送される電気信号に変換する。コンピュータ及びネットワークの絶えず変化する性質のために、図8に示されるコンピューティングデバイス1000の説明は、デバイスの好ましい実施形態を説明する目的のための特定の例としてのみ意図されている。図10に示されるシステムよりも多くの又は少ない構成要素を有する多くの他の構成も可能である。
したがって、本明細書及び図面は、制限的な意味ではなく例示的な意味に考えられるべきである。しかしながら、特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更をそれに加えることができることは明らかであろう。同様に、他の変形も本開示の範囲内である。したがって、開示される技術は、様々な修正及び代替の構成を受けやすいが、それらの特定の例示された実施形態は、図面に示され、上記で詳細に説明されている。しかしながら、開示された特定の1つ以上の形態に本発明を限定する意図はないが、反対に、添付の特許請求の範囲に定義されているように、本発明の範囲内にあるすべての修正、代替の構成及び均等物をカバーするよう意図されていることを理解すべきである。
開示される実施形態を説明する文脈において(特に、以下の特許請求の範囲の文脈において)、「a」及び「an」並びに「the」及び類似の指示物の使用は、別段の指示又は明白な矛盾がない限り、単数形及び複数形の両方を含むものと解釈されるべきである。「備える」、「有する」、「含む」及び「包含する」という用語は、別段の指示がない限り、オープンエンドの用語(すなわち、「含む」を意味するが、これに限定されない)と解釈されるべきである。「接続される」という用語は、修正されず物理的接続を指すとき、何かの介在が存在する場合であっても、部分的又は全体的に、内部に含まれ、取り付けられ又は一緒に連結されているものと解釈されるべきである。本開示における値の範囲の記載は単に、別段の指示がない限り、範囲内にある各個別の値を個々に参照する簡略法として機能するように意図されており、各個別の値は、個々に記載されているかのように本明細書に組み込まれる。「セット」(例えば「アイテムのセット」)又は「サブセット」)という用語の使用は、文脈により別段の注記又は矛盾がない限り、1つ以上のメンバーを含む空でない集合として解釈されるべきである。さらに、文脈によって別段の注記又は矛盾がない限り、対応するセットの「サブセット」という用語は、必ずしも対応するセットの適切なサブセットを示すものではないが、サブセット及び対応するセットは等しくてもよい。
結合語、例えば「A、B及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形式のフレーズは他の方法で、特に別段の記載がない限り又は文脈によって明確に矛盾しない限り、アイテム、用語等がA又はB又はCのいずれかであり得るか、AとBとCのセットの任意の空でないサブセットであり得ることを示すように、一般的に使用されるような文脈で理解される。例えば3つのメンバーを有するセットの具体的な例において、「A、B及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という結合フレーズは、以下のセット、すなわち{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のいずれかを指す。したがって、そのような結合語は、一般に、特定の実施形態が、Aの少なくとも1つ、Bの少なくとも1つ及びCの少なくとも1つの各々が存在することを必要とすることを示唆するようには意図されない。
説明されるプロセスの動作は、別段の指示がない限り又は文脈によって明らかに矛盾しない限り、任意の適切順序で実行され得る。説明されるプロセス(又はその変形及び/又は組合せ)は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で実行され得、ハードウェア又はそれらの組合せによって、1つ以上のプロセッサ上で集合的に動作するコード(例えば実行可能な命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装され得る。いくつかの実施形態において、コードは、例えば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ読取可能な記憶媒体に記憶され得る。いくつかの実施形態では、コンピュータ読取可能記憶媒体は非一時的である。
提供される任意の及びすべての例又は例示的言語(例えば「のような」)の使用は、本発明の実施形態をより良く明らかにすることのみを意図したものであり、別段に請求されない限り、本発明の範囲に対して限定を課すものではない。本明細書における言語は、いずれかの請求されていない要素を本発明の実施に不可欠であるように指示するものとして解釈されてはならない。
本発明を実施するために発明者に知られている最良の形態を含め、本開示の実施形態が記載される。これらの実施形態の変形は、前述の説明を読むと当業者に明らかになるであろう。本発明者らは、当業者がそのような変形を必要に応じて採用することを期待しており、本発明者らは、本開示の実施形態を、具体的に記載された以外の方法で実施することを意図している。したがって、本開示の範囲は、適用可能な法律によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての修正及び均等物を含む。さらに、上述の要素のあらゆる可能な変形における任意の組合せは、別段の指示がない限り又は文脈によって明らかに矛盾しない限り、本開示の範囲に包含される。
本明細書において引用された刊行物、特許出願及び特許を含むすべての文献は、それにより、参照によって組み込まれるように各文献を個々に具体的に示し、本明細書においてその全体を述べたものと同じ限度で、参照によって本明細書に組み込まれる。
上述の実施形態は、本発明を限定するものではなく、例示するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替の実施形態を設計することができることに留意されたい。請求項において、括弧内に付したすべての引用符号は、請求項を限定するものと解釈されるべきではない。「備えた(comprising)」及び「備える(comprises)」等の用語は、いずれかの請求項又は明細書全体に列挙されるもの以外の要素又はステップの存在を除外するものではない。本明細書において、「備える」は「含む又はから構成される」を意味し、「備えた」又は「含む又はから構成された」を意味する。要素の単数形参照は、そのような要素の複数形参照を除外するものではなく、その逆もまた同様である。本発明は、いくつかの別個の要素を含むハードウェアによって及び適切にプログラムされたコンピュータによって実装され得る。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のいくつかが、1つの同じハードウェアアイテムによって具体化され得る。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せを有利に利用することができないことを示すものではない。
要約
本開示において説明され、示唆された新規な技術は、ブロックチェーンデータ構造内に記憶されたデータの完全性を保証するブロックチェーンの特性を妨げることなく、ブロックチェーンの機能性を拡張する。例えばこの技術は、特に、レコードに埋め込まれたブロックチェーントランザクション内で検証のための条件が定義されているデジタルレコード検証の分野において、計算の分野を改善することができる。本開示に記載及び示唆される技術は、ブロックチェーン上で検証されているスマートコントラクトを簡略化することによってブロックチェーンノードが処理リソースの使用を最適化することを可能にすることにより、スマートコントラクトの生成及び実行の分野における計算の分野を更に改善することができる。加えて、本開示で記載及び示唆される技術は、二次算術プログラムを導出することができる縮小算術回路にスマートコントラクトを変形し、それにより、ブロックチェーンノードがスマートコントラクトをより効率的に実行することを可能にすることによって、ブロックチェーンノードの効率を改善することができる。
本開示において説明され、示唆された新規な技術は、ブロックチェーンデータ構造内に記憶されたデータの完全性を保証するブロックチェーンの特性を妨げることなく、ブロックチェーンの機能性を拡張する。例えばこの技術は、特に、レコードに埋め込まれたブロックチェーントランザクション内で検証のための条件が定義されているデジタルレコード検証の分野において、計算の分野を改善することができる。本開示に記載及び示唆される技術は、ブロックチェーン上で検証されているスマートコントラクトを簡略化することによってブロックチェーンノードが処理リソースの使用を最適化することを可能にすることにより、スマートコントラクトの生成及び実行の分野における計算の分野を更に改善することができる。加えて、本開示で記載及び示唆される技術は、二次算術プログラムを導出することができる縮小算術回路にスマートコントラクトを変形し、それにより、ブロックチェーンノードがスマートコントラクトをより効率的に実行することを可能にすることによって、ブロックチェーンノードの効率を改善することができる。
さらに、本開示で記載及び示唆される技術は、スマートコントラクトの詳細が公的に閲覧可能であるという具体的に生じる問題を克服するために、スマートコントラクトがブロックチェーンにコミットされた後に、スマートコントラクトをDSLからGPLに、次いで、縮小算術に変換し、その結果として、スマートコントラクトの詳細の一部を難読化させることによって、必然的にコンピュータ技術に根ざし得る。
Claims (16)
- 第1プログラミング言語で符号化された条件のセットを取得するステップであって、前記第1プログラミング言語は、ドメイン固有の言語であり、前記条件のセットは、スマートコントラクト内に含まれる、ステップと、
前記条件のセットを、第2プログラミング言語で符号化された条件のプログラムセットに変換するステップであって、前記第2プログラミング言語は、汎用プログラミング言語である、ステップと;
前記条件のプログラムセットを予めコンパイルされたプログラムコードに予めコンパイルするステップと;
前記予めコンパイルされたプログラムコードを算術回路に変形するステップと;
前記算術回路を縮小して縮小算術回路を形成するステップと;
前記縮小算術回路を格納するステップと;
を含む、コンピュータ実施方法。 - 前記条件のプログラムセットを予めコンパイルするステップは、変数名を難読化するステップを含む、
請求項1に記載のコンピュータ実施方法。 - 前記算術回路を縮小することは、前記算術回路を最小化して前記縮小算術回路を生成することを含む、
請求項1に記載のコンピュータ実施方法。 - 前記算術回路は、
論理ゲート及び入力を表すノードのセットと、
前記論理ゲートと前記入力の間のワイヤを表す前記ノードを接続するエッジのセットと、
を含む有向非巡回グラフである、
請求項1乃至3のいずれかに記載のコンピュータ実施方法。 - 前記算術回路は、前記ノードのセットのうちの適切なサブセットを含む論理サブモジュールを含み、
前記算術回路を縮小することは、前記算術回路の残り部分とは別に前記論理サブモジュールを縮小することを含む、
請求項4に記載のコンピュータ実施方法。 - 前記論理サブモジュール内の前記論理ゲートの間の前記ワイヤは、幅が1ビットである、
請求項5に記載のコンピュータ実施方法。 - 前記算術回路は、前記ノードのセットのうちの他のサブセットを含む他の論理サブモジュールを更に含み、前記ノードのサブセット及びノードの前記他のサブセットは交わっておらず、
前記算術回路を縮小することは、第2プロセッサコアを使用して前記他の論理サブモジュールを縮小することと並列に第1プロセッサコアを使用して前記論理サブモジュールを縮小することを更に含む、
請求項5又は6に記載のコンピュータ実施方法。 - 計算リソース使用を最適化するためのヒューリスティックに従って、前記論理サブモジュールを前記第1プロセッサコアに割り当てて、前記他の論理サブモジュールを前記第2プロセッサコアに割り当てるステップを更に含む、
請求項7に記載のコンピュータ実施方法。 - 前記ヒューリスティックは、最長処理時間貪欲法である、
請求項8に記載のコンピュータ実施方法。 - 前記算術回路を縮小することは、
前記算術回路のプライムインプリカントのセットを決定することと、
前記プライムインプリカントのセットを、第1積項及び第2積項を含む和の積として表すことと、
前記第1積項及び前記第2積項を簡略化することと、
を含む、請求項1乃至9のいずれかに記載のコンピュータ実施方法。 - 前記第1積項及び前記第2積項を簡略化することは、ブール最小化ルールを前記第1積項及び前記第2積項に適用することによって実行される、
請求項10に記載のコンピュータ実施方法。 - 前記第2プログラミング言語はC++である、
請求項1乃至11のいずれかに記載のコンピュータ実施方法。 - 前記第1プログラミング言語は、機械読取可能な金融コントラクトを構成するために考案されたコンピュータプログラミング言語である、
請求項1乃至12のいずれかに記載のコンピュータ実施方法。 - 前記縮小算術回路を説明する多項式のセットを含む二次プログラムを生成するステップと、
前記二次プログラムの実行においてブロックチェーンネットワーク内のノードによって使用されるパラメータのセットを生成するステップと、
を更に含む、請求項1乃至13のいずれかに記載のコンピュータ実施方法。 - システムにおいて、
プロセッサと、
前記プロセッサによって実行された結果として、当該システムに、請求項1乃至14のいずれかに記載のコンピュータ実施方法を実行させる、実行可能命令を含むメモリと、
を含むシステム。 - コンピュータシステムのプロセッサによって実行された結果として、前記コンピュータシステムに、請求項1乃至14のいずれかに記載のコンピュータ実施方法を少なくとも実行させる、実行可能命令を記憶している非一時的コンピュータ読取可能記憶媒体。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1718505.9 | 2017-11-09 | ||
GBGB1718505.9A GB201718505D0 (en) | 2017-11-09 | 2017-11-09 | Computer-implemented system and method |
GBGB1719998.5A GB201719998D0 (en) | 2017-11-30 | 2017-11-30 | Computer-Implemented system and method |
GB1719998.5 | 2017-11-30 | ||
GBGB1720768.9A GB201720768D0 (en) | 2017-12-13 | 2017-12-13 | Computer-implemented system and method |
GB1720768.9 | 2017-12-13 | ||
GBGB1801753.3A GB201801753D0 (en) | 2018-02-02 | 2018-02-02 | Computer-implemented system and method |
GB1801753.3 | 2018-02-02 | ||
GBGB1805948.5A GB201805948D0 (en) | 2018-04-10 | 2018-04-10 | Computer-implemented system and method |
GB1805948.5 | 2018-04-10 | ||
GB1806444.4 | 2018-04-20 | ||
GBGB1806444.4A GB201806444D0 (en) | 2018-04-20 | 2018-04-20 | Computer-implemented system and method |
PCT/IB2018/058432 WO2019092542A1 (en) | 2017-11-09 | 2018-10-29 | System for simplifying executable instructions for optimised verifiable computation |
JP2020524430A JP7234229B2 (ja) | 2017-11-09 | 2018-10-29 | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020524430A Division JP7234229B2 (ja) | 2017-11-09 | 2018-10-29 | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023075152A true JP2023075152A (ja) | 2023-05-30 |
JP7477674B2 JP7477674B2 (ja) | 2024-05-01 |
Family
ID=64100702
Family Applications (10)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020524532A Active JP7208989B2 (ja) | 2017-11-09 | 2018-10-29 | ブロックチェーン上に検証鍵を記録するためのシステム |
JP2020524517A Pending JP2021502636A (ja) | 2017-11-09 | 2018-10-29 | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
JP2020524430A Active JP7234229B2 (ja) | 2017-11-09 | 2018-10-29 | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム |
JP2020524541A Active JP7221954B2 (ja) | 2017-11-09 | 2018-10-29 | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム |
JP2020524561A Pending JP2021502747A (ja) | 2017-11-09 | 2018-11-01 | 分散コンピューティングシステム及び方法 |
JP2023000947A Pending JP2023036962A (ja) | 2017-11-09 | 2023-01-06 | ブロックチェーン上に検証鍵を記録するためのシステム |
JP2023014319A Pending JP2023052834A (ja) | 2017-11-09 | 2023-02-02 | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム |
JP2023026258A Active JP7477674B2 (ja) | 2017-11-09 | 2023-02-22 | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム |
JP2023173507A Pending JP2023182741A (ja) | 2017-11-09 | 2023-10-05 | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
JP2023176820A Pending JP2023179687A (ja) | 2017-11-09 | 2023-10-12 | 分散コンピューティングシステム及び方法 |
Family Applications Before (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020524532A Active JP7208989B2 (ja) | 2017-11-09 | 2018-10-29 | ブロックチェーン上に検証鍵を記録するためのシステム |
JP2020524517A Pending JP2021502636A (ja) | 2017-11-09 | 2018-10-29 | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
JP2020524430A Active JP7234229B2 (ja) | 2017-11-09 | 2018-10-29 | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム |
JP2020524541A Active JP7221954B2 (ja) | 2017-11-09 | 2018-10-29 | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム |
JP2020524561A Pending JP2021502747A (ja) | 2017-11-09 | 2018-11-01 | 分散コンピューティングシステム及び方法 |
JP2023000947A Pending JP2023036962A (ja) | 2017-11-09 | 2023-01-06 | ブロックチェーン上に検証鍵を記録するためのシステム |
JP2023014319A Pending JP2023052834A (ja) | 2017-11-09 | 2023-02-02 | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023173507A Pending JP2023182741A (ja) | 2017-11-09 | 2023-10-05 | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
JP2023176820A Pending JP2023179687A (ja) | 2017-11-09 | 2023-10-12 | 分散コンピューティングシステム及び方法 |
Country Status (9)
Country | Link |
---|---|
US (8) | US20210377041A1 (ja) |
EP (7) | EP3707855A1 (ja) |
JP (10) | JP7208989B2 (ja) |
KR (5) | KR20200080265A (ja) |
CN (6) | CN117640170A (ja) |
SG (5) | SG11202004149UA (ja) |
TW (1) | TWI806918B (ja) |
WO (5) | WO2019092542A1 (ja) |
ZA (1) | ZA202002575B (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11783679B2 (en) | 2014-04-08 | 2023-10-10 | Micro-Gaming Ventures, LLC | Location-based wagering via remote devices |
US10903997B2 (en) * | 2017-10-19 | 2021-01-26 | Autnhive Corporation | Generating keys using controlled corruption in computer networks |
EP3707855A1 (en) | 2017-11-09 | 2020-09-16 | Nchain Holdings Limited | System for securing verification key from alteration and verifying validity of a proof of correctness |
CN110032568B (zh) * | 2018-12-20 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
WO2020197514A1 (en) * | 2019-03-27 | 2020-10-01 | Koc Universitesi | A distributed hash table based blockchain architecture for resource constrained environments |
US11516000B2 (en) * | 2019-05-29 | 2022-11-29 | International Business Machines Corporation | Approximate hash verification of unused blockchain output |
US11711202B2 (en) | 2019-05-29 | 2023-07-25 | International Business Machines Corporation | Committing data to blockchain based on approximate hash verification |
US11539527B2 (en) | 2019-05-29 | 2022-12-27 | International Business Machines Corporation | Peer node recovery via approximate hash verification |
US11429738B2 (en) | 2019-05-29 | 2022-08-30 | International Business Machines Corporation | Blockchain endorsement with approximate hash verification |
US11570002B2 (en) | 2019-05-29 | 2023-01-31 | International Business Machines Corporation | Reduced-step blockchain verification of media file |
EP3754899B1 (en) * | 2019-06-20 | 2022-03-02 | Telefónica Iot & Big Data Tech, S.A. | Method and system for inter-dlt networks trust enhancement |
CN110445755A (zh) * | 2019-07-04 | 2019-11-12 | 杭州复杂美科技有限公司 | 交易攻击的防御方法、设备和存储介质 |
GB201913143D0 (en) * | 2019-09-12 | 2019-10-30 | Nchain Holdings Ltd | Running a program from a blockchain |
JP7284064B2 (ja) * | 2019-10-16 | 2023-05-30 | 株式会社日立製作所 | コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法 |
CN111143859A (zh) * | 2020-01-07 | 2020-05-12 | 杭州宇链科技有限公司 | 一种采集可信数据的模组以及数据传输方法 |
US11792022B2 (en) | 2020-02-21 | 2023-10-17 | International Business Machines Corporation | Resolution of conflicting data |
JPWO2021166782A1 (ja) * | 2020-02-21 | 2021-08-26 | ||
US11188316B2 (en) * | 2020-03-09 | 2021-11-30 | International Business Machines Corporation | Performance optimization of class instance comparisons |
CN111506783B (zh) * | 2020-04-08 | 2023-12-22 | 百度在线网络技术(北京)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CA3091660A1 (en) * | 2020-08-31 | 2021-11-03 | Polymath Inc. | Method, system, and medium for blockchain-enabled atomic settlement |
CN111768187A (zh) | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN112132576B (zh) * | 2020-09-07 | 2021-08-06 | 易宝支付有限公司 | 基于区块链通信的支付信息处理方法及区块链信息平台 |
US11029920B1 (en) * | 2020-10-21 | 2021-06-08 | Chariot Technologies Lab, Inc. | Execution of a conditional statement by an arithmetic and/or bitwise unit |
US11456871B2 (en) * | 2020-11-03 | 2022-09-27 | Provide Technologies, Inc. | System and method for autonomous mapping of enterprise identity |
KR102346292B1 (ko) * | 2020-11-11 | 2022-01-03 | 엘에스웨어(주) | 키 정보를 이용한 트랜잭션 분류 시스템 및 방법 |
KR102346293B1 (ko) * | 2020-12-08 | 2022-01-03 | 엘에스웨어(주) | 공통 키셋정보를 이용한 트랜잭션 분산처리를 위한 블록체인 시스템 및 수행방법 |
GB2602010A (en) * | 2020-12-15 | 2022-06-22 | Nchain Holdings Ltd | Generating and validating blockchain transactions |
CN113222747B (zh) * | 2020-12-31 | 2024-01-26 | 上海零数众合信息科技有限公司 | 一种区块链隐私交易方法 |
KR102594655B1 (ko) * | 2021-01-11 | 2023-10-27 | 충남대학교 산학협력단 | 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법 |
US20220417044A1 (en) * | 2021-06-25 | 2022-12-29 | Prateek GOEL | System and method to manage large data in blockchain |
CN113469690B (zh) * | 2021-07-23 | 2024-03-26 | 佳乔(深圳)投资有限公司 | 一种基于区块链的交易结算方法 |
CN113610474B (zh) * | 2021-08-16 | 2023-09-22 | 傲林科技有限公司 | 一种基于事件网的库存管理方法和管理系统 |
US20230298064A1 (en) * | 2022-01-26 | 2023-09-21 | Seek Xr, Inc. | Systems and methods for facilitating redemption of unique digital asset utility |
GB2618106A (en) * | 2022-04-27 | 2023-11-01 | Nchain Licensing Ag | Messaging protocol for compact script transactions |
US11818207B1 (en) * | 2022-07-08 | 2023-11-14 | T-Mobile Innovations Llc | Methods and systems for ledger based content delivery using a mobile edge computing (MEC) server |
CN114978514B (zh) * | 2022-07-27 | 2022-11-01 | 杭州友恭科技有限公司 | 密钥管理方法、系统、装置、电子装置和存储介质 |
US11792259B1 (en) | 2022-09-28 | 2023-10-17 | T-Mobile Innovations Llc | Methods and systems for distributing rendering across devices in a customer premise |
CN115801288B (zh) * | 2023-01-10 | 2023-04-18 | 南方科技大学 | 一种基于区块链和零知识证明的验证方法、系统及设备 |
CN116610362B (zh) * | 2023-04-27 | 2024-02-23 | 合芯科技(苏州)有限公司 | 一种处理器指令集译码方法、系统、设备和存储介质 |
US11882216B1 (en) * | 2023-06-08 | 2024-01-23 | Auradine, Inc. | End-to-end hardware acceleration for ZKP from witness generation to proof generation |
Family Cites Families (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
JPH03126133A (ja) | 1989-10-11 | 1991-05-29 | Matsushita Electric Ind Co Ltd | コンパイラ処理方法 |
JPH05252336A (ja) | 1992-03-04 | 1993-09-28 | Toshiba Corp | 画像形成装置 |
US5499191A (en) | 1992-06-15 | 1996-03-12 | Minc Incorporated | Multi-level logic optimization in programmable logic devices |
US5297150A (en) | 1992-06-17 | 1994-03-22 | International Business Machines Corporation | Rule-based method for testing of programming segments |
US8639625B1 (en) * | 1995-02-13 | 2014-01-28 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
JPH08305547A (ja) * | 1995-05-11 | 1996-11-22 | Oki Electric Ind Co Ltd | Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム |
US5920830A (en) | 1997-07-09 | 1999-07-06 | General Electric Company | Methods and apparatus for generating test vectors and validating ASIC designs |
US6519754B1 (en) * | 1999-05-17 | 2003-02-11 | Synplicity, Inc. | Methods and apparatuses for designing integrated circuits |
EP1283422A1 (en) | 2001-08-07 | 2003-02-12 | Lucent Technologies Inc. | Testbench for the validation of a device under test |
WO2003032490A2 (en) * | 2001-10-11 | 2003-04-17 | California Institute Of Technology | Method and apparatus for an asynchronous pulse logic circuit |
US7209555B2 (en) | 2001-10-25 | 2007-04-24 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device |
US7085701B2 (en) * | 2002-01-02 | 2006-08-01 | International Business Machines Corporation | Size reduction techniques for vital compliant VHDL simulation models |
US7281017B2 (en) * | 2002-06-21 | 2007-10-09 | Sumisho Computer Systems Corporation | Views for software atomization |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7178118B2 (en) * | 2003-05-30 | 2007-02-13 | Synplicity, Inc. | Method and apparatus for automated circuit design |
US20060149962A1 (en) | 2003-07-11 | 2006-07-06 | Ingrian Networks, Inc. | Network attached encryption |
US7590236B1 (en) | 2004-06-04 | 2009-09-15 | Voltage Security, Inc. | Identity-based-encryption system |
US7697691B2 (en) * | 2004-07-14 | 2010-04-13 | Intel Corporation | Method of delivering Direct Proof private keys to devices using an on-line service |
US8200700B2 (en) | 2005-02-01 | 2012-06-12 | Newsilike Media Group, Inc | Systems and methods for use of structured and unstructured distributed data |
US20160004820A1 (en) | 2005-02-01 | 2016-01-07 | Newsilike Media Group, Inc. | Security facility for maintaining health care data pools |
JP5537032B2 (ja) * | 2005-12-13 | 2014-07-02 | コーニンクレッカ フィリップス エヌ ヴェ | 安全な閾値復号プロトコル計算 |
TW200725415A (en) | 2005-12-30 | 2007-07-01 | Tatung Co Ltd | Method for automatically translating high level programming language into hardware description language |
JP4547503B2 (ja) * | 2006-03-07 | 2010-09-22 | 国立大学法人徳島大学 | 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体 |
US7926040B2 (en) | 2006-09-06 | 2011-04-12 | International Business Machines Corporation | Method and system for timing code execution in a korn shell script |
WO2008053650A1 (en) | 2006-10-30 | 2008-05-08 | Nec Corporation | Common key block encrypting device, its method, its program, and recording medium |
FR2918525A1 (fr) | 2007-07-06 | 2009-01-09 | France Telecom | Procede asymetrique de chiffrement ou de verification de signature. |
WO2009064122A1 (en) | 2007-11-18 | 2009-05-22 | Lg Electronics Inc. | Methods of joint coding in mobile communication system |
US8336036B2 (en) | 2008-11-21 | 2012-12-18 | Korea University Industrial & Academic Collaboration Foundation | System and method for translating high programming level languages code into hardware description language code |
US8165287B2 (en) | 2008-12-30 | 2012-04-24 | King Fahd University Of Petroleum & Minerals | Cryptographic hash functions using elliptic polynomial cryptography |
FR2947404B1 (fr) | 2009-06-30 | 2011-12-16 | Sagem Securite | Cryptographie par parametrisation sur une courbe elliptique |
US8189775B2 (en) | 2010-02-18 | 2012-05-29 | King Fahd University Of Petroleum & Minerals | Method of performing cipher block chaining using elliptic polynomial cryptography |
WO2011136089A1 (ja) | 2010-04-27 | 2011-11-03 | 日本電気株式会社 | 符号化装置、誤り訂正符号構成方法およびそのプログラム |
WO2012126086A1 (en) | 2011-03-18 | 2012-09-27 | Certicom Corp. | Secure financial transactions |
US8924966B1 (en) * | 2011-03-31 | 2014-12-30 | Emc Corporation | Capture/revert module for complex assets of distributed information technology infrastructure |
US9569771B2 (en) | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US8607129B2 (en) | 2011-07-01 | 2013-12-10 | Intel Corporation | Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic |
JP5697153B2 (ja) | 2011-08-04 | 2015-04-08 | キヤノンマーケティングジャパン株式会社 | 情報処理システム、携帯端末、制御方法、及びプログラム |
US8745376B2 (en) | 2011-10-14 | 2014-06-03 | Certicom Corp. | Verifying implicit certificates and digital signatures |
US9215076B1 (en) * | 2012-03-27 | 2015-12-15 | Amazon Technologies, Inc. | Key generation for hierarchical data access |
US20150379510A1 (en) | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
BR112015010016A2 (pt) * | 2012-11-07 | 2017-07-11 | Koninklijke Philips Nv | compilador, computador, método de compilação e programa de computador |
US9306738B2 (en) * | 2012-12-21 | 2016-04-05 | Microsoft Technology Licensing, Llc | Managed secure computations on encrypted data |
US20140321644A1 (en) | 2013-04-29 | 2014-10-30 | Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National Defence | Method and system for calculations on encrypted data |
US9026978B1 (en) | 2013-10-24 | 2015-05-05 | Cadence Design Systems, Inc. | Reverse interface logic model for optimizing physical hierarchy under full chip constraint |
JP5842255B2 (ja) * | 2013-12-12 | 2016-01-13 | 国立大学法人東京工業大学 | プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法 |
FR3018378A1 (fr) | 2014-03-12 | 2015-09-11 | Enrico Maim | Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses |
US9830580B2 (en) * | 2014-03-18 | 2017-11-28 | nChain Holdings Limited | Virtual currency system |
US10320781B2 (en) | 2016-12-08 | 2019-06-11 | Sensoriant, Inc. | System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy |
US9645794B2 (en) | 2014-09-23 | 2017-05-09 | Texas Instruments Incorporated | Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography |
US10409827B2 (en) * | 2014-10-31 | 2019-09-10 | 21, Inc. | Digital currency mining circuitry having shared processing logic |
US20160162897A1 (en) | 2014-12-03 | 2016-06-09 | The Filing Cabinet, LLC | System and method for user authentication using crypto-currency transactions as access tokens |
PL3073670T3 (pl) | 2015-03-27 | 2021-08-23 | Black Gold Coin, Inc. | System i sposób osobistej identyfikacji i weryfikacji |
AU2016242888A1 (en) * | 2015-03-31 | 2017-11-16 | Nasdaq, Inc. | Systems and methods of blockchain transaction recordation |
WO2016155804A1 (en) | 2015-03-31 | 2016-10-06 | Nec Europe Ltd. | Method for verifying information |
US20160321751A1 (en) * | 2015-04-28 | 2016-11-03 | Domus Tower, Inc. | Real-time settlement of securities trades over append-only ledgers |
US20160342977A1 (en) * | 2015-05-20 | 2016-11-24 | Vennd.io Pty Ltd | Device, method and system for virtual asset transactions |
JP2017004044A (ja) | 2015-06-04 | 2017-01-05 | 富士通株式会社 | ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システム |
CN106293892B (zh) | 2015-06-26 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 分布式流计算系统、方法和装置 |
WO2017008829A1 (en) | 2015-07-10 | 2017-01-19 | Nec Europe Ltd. | A method and a system for reliable computation of a program |
US10366204B2 (en) * | 2015-08-03 | 2019-07-30 | Change Healthcare Holdings, Llc | System and method for decentralized autonomous healthcare economy platform |
US20170091726A1 (en) * | 2015-09-07 | 2017-03-30 | NXT-ID, Inc. | Low bandwidth crypto currency transaction execution and synchronization method and system |
EP3357892A4 (en) * | 2015-09-30 | 2019-05-29 | Sekisui Chemical Co., Ltd. | INTERMEDIATE LAYER FOR LAMINATED GLASS AND LAMINATED GLASS |
US20180331832A1 (en) | 2015-11-05 | 2018-11-15 | Allen Pulsifer | Cryptographic Transactions System |
US20170132621A1 (en) | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
US10048952B2 (en) | 2015-11-11 | 2018-08-14 | Oracle International Corporation | Compiler optimized data model evaluation |
FR3043811B1 (fr) | 2015-11-16 | 2017-11-10 | Morpho | Procede d'identification d'une entite |
US20170140408A1 (en) | 2015-11-16 | 2017-05-18 | Bank Of America Corporation | Transparent self-managing rewards program using blockchain and smart contracts |
US10841082B2 (en) * | 2015-11-24 | 2020-11-17 | Adi BEN-ARI | System and method for blockchain smart contract data privacy |
US11423498B2 (en) | 2015-12-16 | 2022-08-23 | International Business Machines Corporation | Multimedia content player with digital rights management while maintaining privacy of users |
US9715373B2 (en) | 2015-12-18 | 2017-07-25 | International Business Machines Corporation | Dynamic recompilation techniques for machine learning programs |
US10044696B2 (en) | 2015-12-22 | 2018-08-07 | Mcafee, Llc | Simplified sensor integrity |
US9483596B1 (en) * | 2016-01-08 | 2016-11-01 | International Business Machines Corporation | Multi power synthesis in digital circuit design |
US10108812B2 (en) | 2016-01-28 | 2018-10-23 | Nasdaq, Inc. | Systems and methods for securing and disseminating time sensitive information using a blockchain |
AU2017223129A1 (en) | 2016-02-23 | 2018-07-12 | nChain Holdings Limited | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
EP4369273A2 (en) | 2016-02-23 | 2024-05-15 | nChain Licensing AG | A method and system for securing computer software using a distributed hash table and a blockchain |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US11170371B2 (en) | 2016-03-03 | 2021-11-09 | Nec Corporation | Method for managing data in a network of nodes |
US11017387B2 (en) | 2016-03-24 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud services for elemental transactions |
US11017388B2 (en) | 2016-03-25 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud service for composable atomic transactions |
US10839096B2 (en) | 2016-03-28 | 2020-11-17 | International Business Machines Corporation | Cryptographically provable zero-knowledge content distribution network |
US20170287090A1 (en) | 2016-03-31 | 2017-10-05 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
WO2017175073A1 (en) | 2016-04-05 | 2017-10-12 | Vchain Technology Limited | Method and system for managing personal information within independent computer systems and digital networks |
US10545739B2 (en) | 2016-04-05 | 2020-01-28 | International Business Machines Corporation | LLVM-based system C compiler for architecture synthesis |
CN108885761B (zh) | 2016-04-11 | 2023-09-29 | 区块链控股有限公司 | 用于区块链上的安全点对点通信的方法 |
US20170300897A1 (en) * | 2016-04-14 | 2017-10-19 | American Express Travel Related Services Company, Inc. | Systems and Methods for an Electronic Wallet Payment Tool |
US10803537B2 (en) * | 2016-04-18 | 2020-10-13 | R3 Ltd. | System and method for managing transactions in dynamic digital documents |
EP3449450B1 (en) * | 2016-04-29 | 2022-06-15 | Nchain Holdings Limited | Implementing logic gate functionality using a blockchain |
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 |
US10046228B2 (en) | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
US20170337319A1 (en) | 2016-05-20 | 2017-11-23 | Ecole polytechnique fédérale de Lausanne (EPFL) | System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths |
CN107438002B (zh) | 2016-05-27 | 2022-02-11 | 索尼公司 | 基于区块链的系统以及系统中的电子设备和方法 |
US10447478B2 (en) | 2016-06-06 | 2019-10-15 | Microsoft Technology Licensing, Llc | Cryptographic applications for a blockchain system |
FR3052286B1 (fr) | 2016-06-06 | 2018-06-15 | Morpho | Procede de verification d'un droit d'acces d'un individu |
US20180018738A1 (en) | 2016-07-14 | 2018-01-18 | Digital Asset Holdings | Digital asset platform |
US10417217B2 (en) | 2016-08-05 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Systems and methods for blockchain rule synchronization |
CN106780032A (zh) * | 2016-12-16 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种多链场景下的区块链链间资产转移方法 |
US11088823B2 (en) | 2017-01-06 | 2021-08-10 | Koninklijke Philips N.V. | Pinocchio/Trinocchio on authenticated data |
US11362829B2 (en) | 2017-01-06 | 2022-06-14 | Koninklijke Philips N.V. | Distributed privacy-preserving verifiable computation |
CN106790253A (zh) * | 2017-01-25 | 2017-05-31 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 基于区块链的认证方法和装置 |
CN107274184A (zh) | 2017-05-11 | 2017-10-20 | 上海点融信息科技有限责任公司 | 基于零知识证明的区块链数据处理 |
CN107179932A (zh) | 2017-05-26 | 2017-09-19 | 福建师范大学 | 基于fpga高层次综合指令的优化方法及其系统 |
CN107330775A (zh) * | 2017-07-05 | 2017-11-07 | 贵州大学 | 一种基于比特币协议的首价密封交易方法 |
US10135607B1 (en) | 2017-08-11 | 2018-11-20 | Dragonchain, Inc. | Distributed ledger interaction systems and methods |
US10268829B2 (en) | 2017-08-11 | 2019-04-23 | Dragonchain, Inc. | Security systems and methods based on cryptographic utility token inventory tenure |
US10333710B2 (en) | 2017-09-12 | 2019-06-25 | Qed-It Systems Ltd. | Method and system for determining desired size of private randomness using Tsallis entropy |
US10521616B2 (en) | 2017-11-08 | 2019-12-31 | Analog Devices, Inc. | Remote re-enrollment of physical unclonable functions |
EP3707855A1 (en) | 2017-11-09 | 2020-09-16 | Nchain Holdings Limited | System for securing verification key from alteration and verifying validity of a proof of correctness |
-
2018
- 2018-10-29 EP EP18797158.5A patent/EP3707855A1/en active Pending
- 2018-10-29 US US16/762,461 patent/US20210377041A1/en active Pending
- 2018-10-29 WO PCT/IB2018/058432 patent/WO2019092542A1/en unknown
- 2018-10-29 WO PCT/IB2018/058434 patent/WO2019092544A1/en unknown
- 2018-10-29 KR KR1020207014203A patent/KR20200080265A/ko not_active Application Discontinuation
- 2018-10-29 SG SG11202004149UA patent/SG11202004149UA/en unknown
- 2018-10-29 CN CN202311496467.5A patent/CN117640170A/zh active Pending
- 2018-10-29 EP EP18796783.1A patent/EP3707852A1/en active Pending
- 2018-10-29 WO PCT/IB2018/058437 patent/WO2019092545A1/en unknown
- 2018-10-29 JP JP2020524532A patent/JP7208989B2/ja active Active
- 2018-10-29 CN CN201880073019.5A patent/CN111345005A/zh active Pending
- 2018-10-29 EP EP18796782.3A patent/EP3707871B1/en active Active
- 2018-10-29 CN CN201880072678.7A patent/CN111345004B/zh active Active
- 2018-10-29 SG SG11202004146WA patent/SG11202004146WA/en unknown
- 2018-10-29 EP EP18797157.7A patent/EP3707623A1/en active Pending
- 2018-10-29 JP JP2020524517A patent/JP2021502636A/ja active Pending
- 2018-10-29 US US16/762,471 patent/US11658801B2/en active Active
- 2018-10-29 JP JP2020524430A patent/JP7234229B2/ja active Active
- 2018-10-29 SG SG11202004147RA patent/SG11202004147RA/en unknown
- 2018-10-29 EP EP23216404.6A patent/EP4312403A3/en active Pending
- 2018-10-29 KR KR1020207014209A patent/KR20200086284A/ko not_active Application Discontinuation
- 2018-10-29 US US16/762,475 patent/US11635950B2/en active Active
- 2018-10-29 US US16/762,466 patent/US11575511B2/en active Active
- 2018-10-29 JP JP2020524541A patent/JP7221954B2/ja active Active
- 2018-10-29 WO PCT/IB2018/058433 patent/WO2019092543A1/en unknown
- 2018-10-29 KR KR1020207014108A patent/KR20200086282A/ko not_active Application Discontinuation
- 2018-10-29 EP EP22170376.2A patent/EP4092953A1/en active Pending
- 2018-10-29 SG SG11202004148PA patent/SG11202004148PA/en unknown
- 2018-10-29 KR KR1020207014213A patent/KR20200079503A/ko not_active Application Discontinuation
- 2018-10-29 CN CN201880072801.5A patent/CN111316595A/zh active Pending
- 2018-10-29 CN CN201880072692.7A patent/CN111406379A/zh active Pending
- 2018-11-01 CN CN201880072729.6A patent/CN111316594A/zh active Pending
- 2018-11-01 SG SG11202004153UA patent/SG11202004153UA/en unknown
- 2018-11-01 JP JP2020524561A patent/JP2021502747A/ja active Pending
- 2018-11-01 WO PCT/IB2018/058583 patent/WO2019092561A1/en unknown
- 2018-11-01 US US16/762,490 patent/US20210192514A1/en active Pending
- 2018-11-01 EP EP18800333.9A patent/EP3707856A1/en active Pending
- 2018-11-01 KR KR1020207014106A patent/KR20200086281A/ko not_active Application Discontinuation
- 2018-11-08 TW TW107139662A patent/TWI806918B/zh active
-
2020
- 2020-05-08 ZA ZA2020/02575A patent/ZA202002575B/en unknown
-
2023
- 2023-01-06 JP JP2023000947A patent/JP2023036962A/ja active Pending
- 2023-02-02 JP JP2023014319A patent/JP2023052834A/ja active Pending
- 2023-02-03 US US18/105,672 patent/US20230269070A1/en active Pending
- 2023-02-22 JP JP2023026258A patent/JP7477674B2/ja active Active
- 2023-04-03 US US18/130,373 patent/US20230318804A1/en active Pending
- 2023-04-13 US US18/134,276 patent/US20230318805A1/en active Pending
- 2023-10-05 JP JP2023173507A patent/JP2023182741A/ja active Pending
- 2023-10-12 JP JP2023176820A patent/JP2023179687A/ja active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7234229B2 (ja) | 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム | |
CN113489584B (zh) | 一种区块链中随机数的处理方法、装置和电子设备 | |
US20230109846A1 (en) | Computer-implemented systems and methods for serialisation of arithmetic circuits | |
TWI837103B (zh) | 電腦實施方法及系統 | |
KR102398543B1 (ko) | 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230222 |
|
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: 20240319 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240418 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7477674 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |