JP2021502636A - 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 - Google Patents

検証可能な計算のためのcライクなスマートコントラクトの算術的強化 Download PDF

Info

Publication number
JP2021502636A
JP2021502636A JP2020524517A JP2020524517A JP2021502636A JP 2021502636 A JP2021502636 A JP 2021502636A JP 2020524517 A JP2020524517 A JP 2020524517A JP 2020524517 A JP2020524517 A JP 2020524517A JP 2021502636 A JP2021502636 A JP 2021502636A
Authority
JP
Japan
Prior art keywords
arithmetic
source code
circuit
arithmetic circuit
contract
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020524517A
Other languages
English (en)
Inventor
コヴァチ,アレグザンドラ
マデオ,シモーネ
モティリンスキ,パトリック
ヴィンセント,ステファヌ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB1718505.9A external-priority patent/GB201718505D0/en
Priority claimed from GBGB1719998.5A external-priority patent/GB201719998D0/en
Priority claimed from GBGB1720768.9A external-priority patent/GB201720768D0/en
Priority claimed from GBGB1801753.3A external-priority patent/GB201801753D0/en
Priority claimed from GBGB1805948.5A external-priority patent/GB201805948D0/en
Priority claimed from GBGB1806444.4A external-priority patent/GB201806444D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of JP2021502636A publication Critical patent/JP2021502636A/ja
Priority to JP2023173507A priority Critical patent/JP2023182741A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/401Transaction verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/405Establishing or using transaction specific rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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

Abstract

本発明は、高水準ソースコードを該ソースコード内に表された機能を表現する算術回路に変換するシステム及び方法を提供する。本発明は、この変換を実行する翻訳/解釈コンポーネントを含む。好適な一実施形態において、ソースコードは、ブロックチェーンプラットフォームに関連して使用されるようなスマートコントラクトである。本発明は、例えば、ビットコインネットワークに関連して使用されてもよい。一実施形態による方法が、高水準ソースコード(例えば、スマートコントラクト)の部分を処理して算術回路を生成するステップを含む。算術回路は、ソースコード内に表された機能のうち少なくとも一部を表現するように構成された1つ以上の算術ゲートを含む。処理するステップは、ソースコード内に提供された1つ以上の定数を評価して、ブール及び/又は算術演算子を含む1つ以上の式を生じるステップを含む。算術回路は、算術ゲートに接続されたnビットワイヤを含み、ハードウェア及び/又はソフトウェア回路を提供するために使用できる。算術回路は、プロセッサ上で実行可能な二次プログラムを生成するために使用できる。

Description

本発明は、高水準ソースコードを別の形式に変換するツール、手法、及びシステム、例えばインタプリタの分野に一般に関する。本発明は、ブロックチェーン技術にさらに関し、特に、ブロックチェーンにより実現されるソリューションを構築するツールに関する。本発明は、例えばブロックチェーン上で実行するように構成されたスマートコントラクトなどの、マシン実行可能技術の改善された生成にさらに関する。
本文献において、用語「ブロックチェーン」は、電子的なコンピュータベースの分散台帳のいくつかのタイプのうち任意のものを指す。これらには、コンセンサスベースのブロックチェーン及びトランザクションチェーン技術、許可あり(permissioned)及び許可なし(un-permissioned)台帳、共有台帳、及びこれらの変形が含まれる。それは、プライベート及びパブリックブロックチェーンをさらに含む。
ブロックチェーン技術の最も広く知られている適用はビットコイン(登録商標)台帳であるが、他のブロックチェーン実装が提案され、開発されている。本開示では、簡便さ及び例示の目的でビットコインの例が参照されることがあるが、本発明は、ビットコインブロックチェーン又は関連プロトコルのいかなる特定の実装又は変形での使用にも限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。
ブロックチェーンはピアツーピアの電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的なシステムとして実現され、同様に、ブロックはトランザクションから構成される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。
スクリプト(Script)として知られるビットコインブロックチェーンのスクリプト言語はスタックベースである。アイテムがスタックの上部へプッシュされ、あるいは上部からポップされることが可能である。例えば、OP_EQUAL演算は、スタックから上部2つのアイテムをポップし、それらを比較し、結果(例えば、等しい場合に1、等しくない場合に0)をスタックの上部にプッシュする。本実施形態のいくつかにより採用されるいくつかのスクリプト言語では、少なくとも2つのスタック、すなわちメインスタックと代替スタックが存在し得る。
トランザクションがブロックチェーンに書き込まれるためには、それは「立証され(validated)」なければならない。ネットワークノード(マイナー)が、ワークを実行して各トランザクションが有効であることを確保し、無効なトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なる有効性の標準を有することができる。ブロックチェーンにおける有効性がコンセンサスベースであるため、トランザクションは、トランザクションが有効であるとノードの過半数が同意した場合、有効と考えられる。ノードにインストールされたソフトウェアクライアントは、部分的には未使用トランザクション(unspent transaction、UTXO)ロック及びアンロックスクリプト(locking and unlocking scripts)を実行することにより、UTXOを参照するトランザクションに対してこの立証作業を実行する。ロック及びアンロックスクリプトの実行がTRUEの評価であり、適用可能な場合における他の立証条件が満たされる場合、トランザクションはノードにより立証される。立証されたトランザクションは他のネットワークノードに伝搬され、すると、マイナーノードは該トランザクションをブロックチェーンに含めることを選択することができる。
ゆえに、トランザクションがブロックチェーンに書き込まれるためには、それは、i)トランザクションを受信した第1のノードにより立証され、トランザクションが立証された場合、ノードはそれをネットワーク内の他のノードに中継する、ii)マイナーにより構築された新しいブロックに追加される、iii)マイニングされる、すなわち過去のトランザクションの公開台帳に追加される、がなされなければならない。トランザクションは、十分な数のブロックがブロックチェーンに追加されてトランザクションを事実上不可逆にしたとき、確認されたと考えられる。
ブロックチェーン技術は、暗号通貨実装の使用に対して最も広く知られているが、デジタル起業家は、新しいシステムを実現するために、ビットコインが基礎とする暗号セキュリティシステムとブロックチェーンに記憶できるデータとの双方の使用を探求し始めている。ブロックチェーンが暗号通貨の領域に限定されない自動化されたタスク及び処理に使用できる場合、かなり有利であろう。このようなソリューションは、その適用においてより多目的であると同時に、ブロックチェーンの利点(例えば、イベントの永続的な改ざん防止のレコード、分散処理等)を利用することができる。
現在の研究の1つの分野は、「スマートコントラクト」の実装のためのブロックチェーンの使用である。これらは、マシン読取可能な契約又は同意の条件の履行を自動化するように設計されたコンピュータプログラムである。自然言語で書かれる従来の契約と異なり、スマートコントラクトは、入力を処理して結果を生成することができるルールを含むマシン実行可能プログラムであり、これは次いで、これら結果に依存してアクションを実行させることができる。
実施形態において、スマートコントラクトは、作成者又は何らかの他の特定のエンティティがスマートコントラクトの強制及び/又は実行に必要とされないという意味で「スマート」である。実行又は強制に人間の対話は必要とされない。すなわち、特定のエンティティとの対話はスマートコントラクト内の特定のステップで符号化できるが、スマートコントラクトはその他の方法で自動的に実行及び自己強制可能である。それは、マシン読取可能及び実行可能である。いくつかの例において、自動実行は、任意のエンティティがUTXOを消費でき、そのようにするインセンティブ(例えば、報酬)を有することを指す。このような例において、UTXOを消費できる「任意のエンティティ」は、何らかの秘密の知識を証明するよう求められることなくアンロックスクリプトを作成することができるエンティティを指すことに留意する。換言すれば、消費トランザクションは、データのソースが暗号秘密(例えば、秘密非対称鍵、対称鍵等)へのアクセスを有することを検証することなく、立証可能である。さらに、このような例において、自己強制は、ブロックチェーンネットワークの立証ノードが制約に従って消費トランザクションを強制させられることを指す。いくつかの例において、UTXOの「消費(spending)」は、UTXOを参照して有効として実行する消費トランザクションを作成することを指す。
したがって、単なる暗号通貨支払いの手段を越え、ブロックチェーン技術が使用可能な用途の周りには大きな関心がある。これには、IoTデバイスの制御、A.I.技術を組み込んだインテリジェントシステムなどが含まれる。
しかしながら、C、C++、Java(登録商標)等の高水準言語を使用するプログラミングの分野には多くの熟練者が存在するが、ブロックチェーンのアプリケーションを作成することができる人は数が比較的少ない。これは部分的には、ブロックチェーンについて比較的低水準で、メイン及びaltスタックを操作するop_codeを使用してコード化する現在の必要性のためである。特に、ブロックチェーンの実装のためのスマートコントラクトのプログラミングは、Delmolino, K.ら(2015)のStep by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab、及びJuels, A.ら(2013)のThe Ring of Gyges: Using Smart Contracts for Crimeで調査されているように、困難でエラーを起こしやすいことが知られている。
ブロックチェーンと共に使用できるソリューション及びアプリケーションの作成を可能にすることにより、改善されたブロックチェーン及び関連プラットフォームが提供される。算術ゲートの算出のソリューションがさらに提供される。算術回路は、プレディケート(predicate)としての又はプレディケートの実行のために構成され得る。本発明は、(従来技術開示により検証又は証明を単に提供するのと対照的に)実行可能プログラムの作成及び符号化を可能にする。
したがって、1つ以上の態様においてブロックチェーン及び分散コンピューティング技術を改善する方法及びシステムを提供することが望ましい。このような改善されたソリューションが次に考案されている。ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法及びシステムが提供される。
本発明は、非中央集権的なシステムにおいてプログラマビリティを提供し、容易にするように配置されたシステム及び方法を含み得る。それは、例えば、暗号通貨システム、ブロックチェーンにより実現されるシステム、及び/又は分散計算システムでもよい。1つの観点からは、それは、エラー、時間、労力、コスト、及びプログラミング処理の間に必要とされるリソースを低減する。ゆえに、それは、技術的な問題に対する技術的なソリューションを提供する。別の観点からは、それは、エラー及びバグの低減のため、強化されたブロックチェーンソリューションを提供する。それは、ソフトウェアの完全性も保持する。
有利には、既知のインタプリタ及びコンパイラとは異なり、本発明は、アーキテクチャ非依存のソリューションを提供する。さらに、それは、実行を可能にするために仮想マシン(VM)の使用を必要としない。
本発明は、ソースコードを入力として取り込んで算術回路cを生成する、コンピュータにより実現されるシステム及び方法を提供し得る。結果として生じる回路Cは、(検証のためのプルーフとは対照的に)HLLソースコードの機能の表現であり得る。実行されると、算術回路Cは計算の結果を提供し、これは次いで検証され(verified)得る。回路Cはマシン実行可能でもよく、あるいはマシン上で実行のために処理されてもよい。ソースコードは、計算を表し又は表現し得る。
この回路は、体(field)
Figure 2021502636
からの値を搬送して加算及び乗算ゲートに接続する「ワイヤ(wires)」から構成されてもよい。算術回路は、ソフトウェア、及び/又はワイヤ及び論理ゲートを有する物理回路において具現化されてもよい。ソースコードは、HLL又はGPLで書かれた機能性又は計算Pの一部又は全部を含み、あるいは表現し得る。本発明は、その計算を算術回路Cに変換するインタプリタとして記述されてもよい。算術回路C及び何らかの入力xが、実行のためにエンティティに供給されてもよい。
本発明は、ソースコード内に表された計算を、(マシン/プロセッサにより)実行可能なプレディケートに変換し、あるいは翻訳し得る。(HLL/GPL)ソースコードは、予めコンパイルされ、あるいは前処理されてもよい。
1つ以上の実施形態において、公開評価鍵(evaluation key、EK)及び公開検証鍵(verification key、VK)が、秘密値sを使用して導出され得る。本方法は、EK及びVKを使用して特定の入力xに対する計算を評価するステップを含んでもよい。出力y、1つ以上の回路ワイヤの値、及びEKが使用されて、プルーフオブコレクトネス(proof-of-correctness)πを生成することができる。プルーフπはブロックチェーンに記憶され得る。それはブロックチェーントランザクションに記憶されてもよい。本方法は、ブロックチェーントランザクションにプルーフを提供するステップを含み得る。それは、トランザクションをブロックチェーンにサブミットするステップ、及び/又はそれをブロックチェーンに記憶するステップを含んでもよい。
本方法は、ブロックチェーンに記憶されたプルーフを検証するステップを含み得る。それは、1つ以上のパーティ(parties)により検証されてもよい。有利には、それは、証明者(prover)にパーティの各々と別個に対話するよう求めることなく複数のパーティにより検証され得る。これは、従来技術と比較してより効率的及び迅速なソリューションを提供する。
ブロックチェーンネットワーク(例、ビットコイン)内のノードの全部又は一部がトランザクションを検証し得る。検証は、公開検証鍵VK及びプルーフπを使用してスマートコントラクトを検証するために実行されてもよい。
本発明の一利点は、マイナーが既知の従来のブロックチェーンプロトコルに従ってトランザクションを検証することである。検証処理は、ネットワーク内でのマイナーの役割の一部である。したがって、本発明は、検証が必要な既存の動作の一部として実行されるため、技術的利点に対してノードによりなされる労力を使用することができる。これは、従来技術と比較して効率的な配置を提供する。
いくつかの実施形態において、本発明は、図1に示すように、DSLで符号化されたスマートコントラクトから二次算術プログラム(quadratic arithmetic program、QAP)へのワークフローの一部を形成し得る。
図2に示すように、ドメイン固有言語(Domain Specific Language、DSL)スマートコントラクトは、高水準言語コントラクトに変換され得る。DSLスマートコントラクトは、正確なセマンティクスを有するフォーマルな言語で書かれてもよい。DSLスマートコントラクトは、条件のセットを含み得る。DSLスマートコントラクトの結果は、条件のセットの履行に依存してもよい。
HLLプリコンパイラ(プリプロセッサとも呼ばれ得る)は、HLLコントラクトにより参照される外部ライブラリを組み込んで、HLL前処理(HLL pre-processed)コントラクトを生成し得る。HLLプリコンパイラは、図2ではCプリコンパイラとして参照され得る。HLLコントラクトは、図2ではC言語コントラクトとして参照され得る。
次いで、HLL前処理コントラクト(すなわち、ソースコード)は、本発明の一実施形態により算術回路に変形され得る。この算術回路は、QAP多項式が導出される縮小算術回路を生成するように最適化されてもよい。
前処理変換は、ソフトウェアプログラム(図2ではCプリコンパイラと呼ばれるプログラム)により実行されてもよく、これは、実行の結果として、DSLで書かれたDSLスマートコントラクトなどの条件のセットを受信し、DSLコードをHLLコントラクトなどのHLLソースコードに翻訳する。これは、図2では「C言語前処理コントラクト」として参照され得る。それは、本明細書では単に「ソースコード」と呼ばれることもある。HLLコントラクトは、DSLスマートコントラクトで定義されたコントラクトを含むC++プログラムなどのHLLプログラムでもよい。HLLプリコンパイラは、HLLコントラクト及び必要な外部ライブラリを処理してスタンドアロンのHLL前処理コントラクト(すなわち、ソースコード)を生成するコンピュータ実行可能プログラムでもよい。
外部ライブラリは、呼び出しによりHLLコントラクトにより利用される予め書かれたサブルーチン、関数、クラス、コンテナ、値、及び/又は変数型の集合でもよい。例えば、外部ライブラリを呼び出すことにより、HLLコントラクトは、そのライブラリの機能を、該機能自体を実装する必要なく得る。HLL前処理コントラクトは、式及び演算子のセットを含んでもよい。演算子は、算術演算子(例えば、加算(+)、乗算(*)等)、比較演算子(例えば、未満(<)、等値(==)、以上(>=)等)、条件ステートメント(例えば、if‐then(?,:))、又は論理演算子(例えば、AND(&&)、OR(||)、NOT(!)、XOR
Figure 2021502636
等)を含んでもよい。いくつかの実施形態において、メイン関数(エントリポイント)は、予め定義された名前及びフォーマットを有する。
算術回路は、変数のセットにわたる有向非巡回グラフ(directed acyclic graph)DAGでもよい。ゼロの入次数(indegree)を有するDAGのあらゆるノードは、変数(例えば、x)を表現する入力ゲートでもよく、DAGのあらゆる他のノードは、合計ゲート(+)又は積ゲート(×)でもよい。あらゆるゲート(ノード)は1の出次数(outdegree)を有し得るため、その基礎をなすグラフは有向ツリーであり得る。算術回路は、複雑さの2つの尺度、すなわちサイズと深さを有し得る。いくつかの例において、算術回路の「サイズ」は、算術回路内のゲート数に基づいてもよい。いくつかの例において、算術回路の「深さ」は、算術回路内の最長有向パスの長さに基づいてもよい。
算術回路が生成された後、それは縮小され得る。
本発明による、コンピュータにより実現される方法は、ソースコードの部分を処理して(実行可能な)算術回路を生成するステップを含み得る。ソースコードは、高水準プログラミング言語で書かれてもよく、算術回路は、ソースコード内に表されたいくつかの機能又は計算を表現するように構成された1つ以上の算術ゲートを含んでもよい。
これは、HLLソースコードを算術回路に変換しない従来技術で知られるコンパイラ及び解釈とは対照的である。
算術回路は、プロセッサ上で実行されてもよい。この回路は、ブロックチェーントランザクションに提供されてもよい。
これは、計算又は論理回路の検証を教示し、かつ/あるいは(ゼロ知識)証明の出力に至る従来技術の開示とは対照的である。例えば、Pinocchioシステムは、一般的な計算を検証するゼロ知識証明を生成する。「Communications of the ACM」、Vol.59、No.2、2016 Parno Bらの「Pinocchio: Nearly Practical Verifiable Computations」、103-112(Parno)。ゆえに、Pinocchioなどの従来技術のいずれかの検証システムが検証の目的で本発明と共に使用でき、本発明は、従来技術を超える機能性及び結果を提供する。
したがって、本発明は、計算を表現及び/又は提供するマシン実行可能出力を提供する。これは、次いで検証され得る。これは、例えば、検証スクリプトをコンパイルして計算を実行するように構成された(別個の)プログラムを立証する、ゆえに2パートの処理を含むPinocchioシステムとは対照的である。代わりに、本発明は、1パートのアプローチ、すなわち算術回路への高水準計算それ自体のコンパイルを使用する。ゆえに、本発明は、上記従来技術とはかなり異なるアプローチを使用して異なる技術的問題を解決する。
好ましくは、ソースコードはスマートコントラクトである。ソースコードは、上記のように前処理されてもよい。
好ましくは、処理するステップは、ソースコード内に提供される1つ以上の定数を評価するサブステップを含む。これは、ブール及び/又は算術演算子を含む1つ以上の式を提供し得る。
本方法は、算術回路を使用してハードウェア及び/又はソフトウェア回路を提供するステップをさらに含んでもよい。算術回路は、算術ゲートに接続されたnビットワイヤを含んでもよい。算術回路は、アーキテクチャ非依存である。すなわち、それは、特定のハードウェア又はソフトウェアのアーキテクチャ又はプラットフォームでの動作又は使用に対して配置されない。それは、仮想マシンの使用を必要としない。これは、アーキテクチャ特有であるか又はVMの使用を必要とする従来技術のコンパイラ及びインタプリタとは対照的である。
本方法は、ソースコードを前処理して1つ以上の定数を決定するステップをさらに含んでもよい。前処理するステップは、
コメントを削除するステップ、
ヘッダファイルからソースファイルにヘッダ宣言をインポートするステップ、
複数のソースファイルをマージするステップ、
ディレクティブ及びマクロを解決し、あるいは評価するステップ
のうち1つ以上を含んでもよい。
本方法は、ソースコード内に宣言された全てのグローバル変数を検出するステップをさらに含んでもよく、グローバル変数は、関数、構造体若しくはクラス、定数、及び/又は実行のエントリポイントに関する。
本方法は、シンボル(識別子)のテーブルを生成して、ソースコード内に提供される各シンボル(すなわち、識別子)をソースコード内に提供される宣言情報に関連づけるステップをさらに含んでもよい。テーブル内のシンボルは、グローバル及び/又はローカルシンボルであり得る。
本方法は、1つ以上の入力変数に適用される論理及び/又は算術演算の組み合わせとして1つ以上のアウト変数を表す算術及び/又は論理式を結果としてもたらすソースコードの行ごとの(line-by-line)評価を実行するステップをさらに含んでもよい。
これは、型を復号するステップ、式を復号するステップ、式を評価するステップ、及び/又は上記機能により必要とされるデータ構造のためのメモリを割り振るステップをさらに含んでもよい。
本方法は、式の算術及び/又は論理演算を算術ゲートにマッピングするステップをさらに含んでもよい。マッピングするステップは、ワイヤ拡張を実行するサブステップ、及び/又はワイヤ圧縮を実行するサブステップを含んでもよい。
本方法は、算術回路を使用して、回路の記述を提供する多項式のセットを含む二次プログラムを生成するステップをさらに含んでもよい。この方法は、1つ以上の入力を使用する2次プログラムの実行のために2次プログラムをエンティティに提供するステップをさらに含んでもよい。
本発明は、上述の方法ステップのいずれかを実現又は実行するように配置されたシステムをさらに提供し得る。システムは、ソースコードの処理を実行するように配置された翻訳又は変換コンポーネント(すなわち、インタプリタ/コンパイラ)を含み得る。(ゼロ知識)証明の生成のためのコンパイラが当該分野において知られているが(例えば、上述の「Pinocchio: Nearly Practical Verifiable Computations」(Parno)を参照する)、これらは本発明のように算術回路へコンパイルしない。本発明は、回答のプルーフ又は検証でなく回答を生成する。
コンピュータにより実現されるシステムが、
プロセッサと、
プロセッサによる実行の結果として、当該システムに本願で記載又は請求される発明/方法の1つ以上の実施形態のうち任意の実施形態のコンピュータにより実現される方法を実行させる実行可能命令を含むメモリと、を含む。該命令は、ソースコードの処理を実行するように構成された翻訳又は変換コンポーネント(すなわち、インタプリタ/コンパイラ)を提供する命令を含み得る。
非一時的コンピュータ読取可能記憶媒体が、コンピュータシステムのプロセッサにより実行された結果としてコンピュータシステムに本願で記載又は請求される発明/方法の1つ以上の実施形態を少なくとも実行させる実行可能命令を記憶する。
本発明のこれら及び他の態様が、本明細書に記載した実施形態から明らかであり、それらを参照して明らかにされるであろう。次に、本発明の一実施形態が、単なる例として、添付の図面を参照して説明される。
本発明の例示的な使用及び実施形態に関与する検証可能な計算及びアクタのプロトコルを示す。これらのアクタは、クライアント、ワーカ(「証明者」としても知られる)、及び検証者である。 本発明の一実施形態によるDSLコントラクトから二次算術プログラム(QAP)への翻訳処理を示す。 本発明の一実施形態による算術回路の一例を示す。 本発明の一実施形態による回路表現を含むパケット(ヘッダ+ボディ)の高水準記述を示す。 以下で説明される例のとおり「Check if variable <a> is even」のステートメントを表現する4ビットワイヤエキスパンダの一実装を示す。 本発明の一例示的な実装によるビルディングブロックを示し、このビルディングブロックは条件ステートメントを実現する。 本発明の一実施形態による、定数生成器モジュールが算術回路により使用される定数の作成をどのように担うかを示す。使用される例では、3つの定数(C、C、及びC)に加えてデフォルトのイチ(1)及びゼロ(0)の値が生成される。 種々の実施形態が実現され得るコンピューティング環境を示す概略図である。
[概要]
次に、一実施形態により、本発明がどのように動作実現され得るかの例示を提供する。この例では、高水準言語コントラクト(例えば、C/C++言語)を算術ゲートを含む回路に変換するように構成されたインタプリタの可能な実装について説明する。しかしながら、本発明は、他のHLL言語を翻訳するように構成されてもよい。この変換を容易にするために、特定の構造又はビルディングブロック(building blocks)が使用可能である。1つ以上の実施形態において、この表現は、分散された検証可能な計算を提供することができる包括的なパイプラインの構築の最初のステップとみなすことができる。
この例で提示されるビルディングブロックは、本発明の実施形態により取り扱われる全ての可能な高水準言語構造の網羅的なリストであることは意図されない。さらに、提示される例の代替的な実装が提供され得る。これらは当業者のスコープの範囲内に入る。
次に、本発明の一例示的な実施形態を提供する。ただし、これは、本発明が使用され得る適用の一例であることに留意することが重要である。当業者は、本発明が他の文脈及び適用において有利に使用され得ることを理解するであろう。本発明は、スマートコントラクト又は金融商品に関する使用に限定されない。
[本発明の例示的な実施形態及び例示的なユースケース]
例えば、ユーザがドメイン固有言語(DSL)を使用して金融商品のコントラクトを生成することを可能にするプロトコルを考える。ひとたびコントラクトが生成されると、その実行は信頼されていないパーティ(「ワーカ(workers)」又は「証明者」と呼ばれる)にアウトソーシングでき、その正しさはパブリックに検証できる。プロトコルは、
・完全性、すなわち、正当な検証者(honest verifier)はプロトコルが正しく守られる場合に出力の有効性を確信する
・健全性、すなわち、不正な(cheating)証明者は出力の真正性(authenticity)について正当な検証者に確信させることができない
・ゼロ知識性、すなわち、不正な検証者は出力の有効性以外何も習得しない
を確保する暗号プリミティブを利用する。
プロトコルの主な利点は以下のとおりである。
・参加者間の通信が要求されないため、中間者攻撃が防止される
・ブロックチェーン技術の使用に起因して、悪意のあるノードがデータを改ざんすることが困難になる。
・信頼されたハードウェアデバイスなどの信頼されたサードパーティが回避される。
・コントラクトの立証がコードの再実行を意味しない。計算は、ネットワーク内のあらゆるノードにより複製されるわけではない。代わりに、正当な実行のプルーフがパブリックブロックチェーンに記憶され、立証目的にのみ使用される。
このようなシステムは、種々のタイプのタスク及び製品に対応する種々のタイプのスマートコントラクトを処理することができ、金融の適用又は使用に限定されない。その非中央集権的及び分散された性質に起因して、(ビットコイン)ブロックチェーンは、2つ以上のパーティ間の合意を解決するのに十分適した環境を提供する。
このようなシステムは、非中央集権的な暗号通貨システムにおいてプログラマビリティを提供し、容易にする必要がある。しかしながら、当技術分野では、スマートコントラクトプログラミングはエラーを起こしやすい処理であることが認識されている。Delmolino, K.ら(2015)のStep by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab、及びJuels, A.ら(2013)のThe Ring of Gyges: Using Smart Contracts for Crimeを参照する。
したがって、スマートコントラクトをプログラマにより書き込む及び読み取ることをより容易にするDSLを使用することができ、それによりエラーを低減させ、プログラミング処理の間の時間、労力、コスト、及びリソースを低減させることは有利であろう。理想的には、専門家でないプログラマが、いかなる暗号も実装する必要なくコントラクトを書くことができるであろう。代わりに、コンパイラ/インタプリタが、ソースコードをユーザとブロックチェーンとの間の暗号プロトコルに自動的にコンパイルする。これらは、本発明により解決される技術的問題の内にある。このような利点は、プルーフの検証及び生成に関する従来技術の手法では提供されない。
このフレームワークは、最先端の暗号的に検証可能な計算を使用し(Gennaro, R.ら(2013)のQuadratic Span Programs and Succint NIZKs without PCPsを参照する)、正しい関数評価を確保する。すなわち、機密情報を取得した敵対者は、検証可能な計算の使用のおかげで結果を操作することができない。このモデルは、ブロックチェーン技術を使用してプルーフオブコレクトネスを記憶し、「構築による正しさ(correct-by-construction)」の暗号アプローチをスマートコントラクトと組み合わせる。
この例では、高水準言語コントラクト(例えば、C/C++言語)を算術ゲートを含む回路に変換できる翻訳コンポーネントの実装に焦点を合わせる。結果として生じる回路は、(検証目的のプルーフとは対照的に)HLLソースコードのマシン実行可能表現である。この変換を容易にするために、特定の構造又はビルディングブロックが使用される。例において、本発明が使用されて、分散された検証可能な計算システムを実現するように構成されたパイプラインの構築の最初のステップを提供することができる。しかしながら、本発明はこのユースケースに限定されず、より広い範囲の適用及び文脈で実施するために使用できることを再度指摘することに留意する。
例示的な実装を説明するために、検証可能な計算のためのフレームワークの概要を提供し、続いて、本発明によるスマートコントラクトの回路表現の導入を提供する。
[例示的な使用:検証可能な計算:フレームワーク]
問題文。クライアントは、計算P及び入力xの仕様を信頼されていない証明者(ワーカ)に送信する。ワーカは出力yを計算し、それをクライアントに返す。y=P(x)の場合、正しい証明者は正しさの証明書を生成し、yの正しさを(クライアントだけでなく)誰にでも確信させることができるべきである。そうでない場合、検証者は高い確率でyを拒絶するべきである。
プロトコルは、検証者にとってローカルでP(x)を実行するより安価であるべきであり、あるいはプロトコルは、検証者が自身で実行できない計算Pを取り扱うべきである。さらに、ワーカの挙動の正しさについての仮定は必要とされない。
データアクセス。システムに、2つの区別可能な非中央集権的なデータベースが存在する。(i)DHT ‐ オフチェーンデータがDHTに記憶される。データはノードにわたり十分にランダム化され、高い可用性を確保するように複製される。(ii)公開台帳 ‐ 正しい実行のプルーフがブロックチェーンに記憶され、監査されることが可能である。
プロトコル。プロトコルにより必要とされるステップを図1に示す。計算Pは回路Cにより表現される。クライアントが入力xを供給し、ワーカが入力xに対して回路を実行し、出力がyであると主張する。証明者は、{C,x,y}に対する有効なトランスクリプトを取得することが期待される。{C,x,y}に対する有効なトランスクリプトは、以下のような回路ワイヤへの値の割り当てである。
・入力ワイヤに割り当てられる値はxのものである
・中間値はCにおける各ゲートの正しいオペレーションに対応する
・出力ワイヤに割り当てられる値はyである
主張された出力が正しくない、すなわちy≠P(x)の場合、{C,x,y}に対する有効なトランスクリプトは存在しない。
セットアップフェーズは、正確なセマンティクスを有するフォーマルな言語でコントラクトを書くことを含む。本発明によれば、インタプリタは、入力としてソースコードを取り込み、体
Figure 2021502636
からの値を搬送して加算及び乗算ゲートに接続するワイヤを含む算術回路Cを生成する。いくつかの実施形態において、英国特許出願第1718505.9号に記載されているような算術回路最適化手法が利用されて、スマートコントラクトの結果の決定の間に必要な必要とされるリソースを低減させてもよい。
回路Cから、システムは2次プログラムQを生成し、すなわち、Qは、元の回路Cの完全な記述を提供する多項式のセットを含む。次いで、全ての証明者及び検証者により使用されるパブリックパラメータが生成される。
公開評価鍵EK及び公開検証鍵VKが、クライアントにより選択された秘密値sを使用して導出される。ワーカは、これらの公開情報を使用して、特定の入力xに対する計算を評価する。出力y、内部回路ワイヤの値、及びEKが使用されて、プルーフオブコレクトネスπを生成する。プルーフπはブロックチェーンに記憶され、証明者にこれらのエンティティの各々と別個に対話するよう求めることなく複数のパーティにより検証されることが可能である。
全てのビットコインノードは、公開検証鍵VK及びプルーフπを使用して支払トランザクションを立証し、ゆえにコントラクトを立証することができる。
[スマートコントラクト及び回路表現]
ドメイン固有言語(DSL)がスマートコントラクトを実現するために必要とされ、例えばアクタラスモデリング言語(Actulus Modeling Language、AML)、デジタル資産モデリング言語(Digital Asset Modeling Language、DAML)、金融商品マークアップ言語(Financial Products Markup Language、FpML)などであるが、例示の簡潔さのため、本明細書では、高水準言語(High Level Language、HLL)、Cなどの、より大きい範囲の型、演算子、及び構造を提供することができるより一般的な言語の使用について説明する。しかしながら、本発明は、専用ツールを使用して異なるDSL言語をC(又は別のHLL)に変換するように構成可能である。
本明細書で使用される例において、インタプリタは、Cで書かれたソースコードを処理する。本発明は、他の高水準言語(「汎用言語」(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が含まれる。
高水準言語の論理回路への翻訳のための包括的なパイプラインを図2に示す。本発明に従い、図2の点線ボックスで強調されたモジュールに焦点を合わせる。
・コントラクト及び必要な外部ライブラリを含む高水準Cプログラムが一緒にリンクされ、スタンドアロンの前処理コントラクトを作成する。この段階では、Cプリコンパイラが、全ての必要なリソースが利用可能であることのチェックを担う。プリプロセッサディレクティブがさらに評価される。
・定数式が評価され、全てのシンボルが登録される。結果は、加算(+)、乗算(*)、比較(<)、等値(==)、条件ステートメント(?,:)、論理演算子(and、or、not、xor)などのCライクな演算子の式のセットである。予め定義された名前及びフォーマットを有するメイン関数が必要とされる。算術回路(図3参照)は、基本算術ゲート、例えば加算及び乗算に接続されたnビットのワイヤを有するシンボルを表現することにより構築される。
・二次算術プログラム(QAP)における多項式は、Gennaro, R.ら(2013)のQuadratic Span Programs and Succinct NIZKs Without PCPsで紹介されているように、算術回路のルートにおけるその評価の観点で定義される。
図3は算術回路の一例を示す。各ワイヤは体Fからのものであり、全ての演算は体F上で実行される。この回路は、y=x+x・x・(x+x)を計算する。回路の最終出力は合計であるため、さらなる乗算ゲート(定数イチを乗算する)が必要とされる。
[C言語インタプリタ]
本発明の一例示的な実施形態に従い、次に、プリプロセッサディレクティブ、条件文、算術及びビット単位ブール演算子、グローバル関数を含むCプログラミング言語に対して定義された命令のサブセットを認識することができるインタプリタについて説明する。当業者に容易に理解されるように、配列及び構造体のサポートが付加的な論理なしにさらに提供され得る。
インタプリタは、以下の「算術プリミティブの生成」と題されたセクションで提示される乗算、加算、及び特定のビルディングブロックを使用して、式を算術ゲート言語へ強化する。各ワイヤは、指定されたビット幅を有する。1ビット幅の場合、ワイヤは二値変数を表現する。
[ブロックチェーンでの実装のためのCライクなプログラムの算術的強化]
次に、Cソースコードで表された機能を表現する算術回路の構築の処理について詳述する。処理の各段階で、予期されない挙動(例えば、欠落したシンボル、誤ったシンタックス、又は未知の演算子)は、適切なコードエラーと共にプログラム実行の即時終了を結果としてもたらす。
[前処理]
図2に示すように、スマートコントラクトは複数のファイル及びライブラリから構成され得る。プロトコルの最初のステップは、コントラクトを実現するために必要とされる命令のフルセットを含む単一のソースファイルの作成を含む。個々のサブステップが以下のように列挙され得る。
・全てのコメントが除去される。
・ヘッダ宣言がヘッダファイルからソースファイルにインポートされる。
・全てのソースファイルがマージされる。
・プリプロセッサCディレクティブ及びマクロが解決され、あるいは評価される。これらは、#defineディレクティブ及び条件付き#ifdefディレクティブを含む。
このステップの終わりに、全てのプリプロセッサ定数の実際の値が分からなければならない。ソースコードで使用される変数の値は、コントラクトの入力の値のみに依存しなければならない。さらに、ソースコード中のエントリポイントの宣言は、以下のシンタックスを有さなければならない。
Figure 2021502636
型inputType及びoutputTypeは、ユーザにより定義される。以下のソースコードボックスは、2つの符号なし整数入力間の単一の合計演算を含むスマートコントラクトの簡素な例を示す。
Figure 2021502636
出力は、特定のコントラクトに依存して異なる型の変数で表現できる。上記の場合、単一の出力が、算術演算の結果に単に接続される。
[整数及び実数]
この例示的な実施形態において、簡潔さのため、(符号付き又は符号なし)整数間の演算のみが利用可能であると仮定する。この仮定が除去される場合、回路ビルディングブロック(「算術プリミティブの生成」のセクションを参照)は拡大されなければならない。したがって、実数間の演算は、整数間の演算に変換されなければならない。以下のコントラクトの部分について考える。
「従業員の平均給与が32.5Kドルより高いかをチェックする」
このステートメントは、平均値を計算するために(N人の従業員による)除算を必要とする。しかしながら、このステートメントは、以下の整数間の式に変換できる。
Figure 2021502636
ここで、sは第iの従業員の給与を表現する。
[シンボルのグローバルテーブルの作成]
コンピュータ科学において、シンボルのテーブルは、ソースコード中の各識別子(シンボル)をその宣言に関する情報に関連づけるためにコンパイラ/インタプリタにより使用されるデータ構造である。この第2のステップでは、インタプリタは、ソースファイル内に宣言された全てのグローバルシンボルを検出する。
・関数
・構造体(又はクラス)
注:クラス(C++などのOOP言語)の使用は、public、protected、及びprivateセクションのスコープをチェックするためのさらなる論理を要する。
・定数
(グローバル変数も許可されるが、推奨されない。contract(...)関数のスコープは、独立したブラックボックスとして扱われるべきである。その挙動は、外部変数に依存すべきではない。)
これらのシンボルの各々に対して、それらの識別子の内部宣言を表現するローカルシンボルの階層が構築される。この段階の終わりに、テーブル内の各グローバルシンボル(名前、型、及び値)は、さらなる処理のために直接アドレス指定されてもよい。
[コントラクトのエントリポイントの検出]
グローバルシンボルの1つは、コントラクト(「前処理」セクションのContract関数)のエントリポイントでなければならない。そのパラメータの名前、数、及び型は、予期されたシンタックスに対してチェックされる。全ての入力構造がコントラクト内で使用され、全ての出力構造がコントラクトのいくつかの部分にリンクされることをチェックするのに、さらなる論理が存在してもよい。
[行ごとの評価]
各コード行は独立して分析される。識別子の内部宣言を表現するローカルシンボルは、シンボルのグローバルテーブルの階層に含まれる。より詳細には、この段階は以下のタスクを担う。
・構造体及び配列、基本型(ブール、整数等)及びポインタの宣言を含む、型の復号。
・式の復号、例えば、単項又は二項演算、定数、識別子、データ構造、及び関数呼び出し。
・式の評価、すなわち、入力値に依存しない(数値)式の評価。
・メモリ割り振り、すなわち、コントラクト機能により必要とされるデータ構造のための一時的なストレージ割り振り。
この段階は、空間的(すなわち、使用されるメモリ)及び時間的(すなわち、演算子の優先順位)の観点から算術式の全てのステートメントをリンクする。したがって、各出力変数は、入力変数に適用される論理及び算術演算の組み合わせとして表される。
[陽的演算式の作成]
「行ごと」セクションで定義されたデータ構造を使用し、一般的な算術/論理式eは、以下のシンタックスに従って陽的(explicit)形式で表現されるように折り畳まれる。
OP(OPN−1(...(OP(OP))...))
このシンタックスに従い、任意の演算子OPi+1が演算子OPの後にeに適用される。
例えば、次のコードを所与として、
Figure 2021502636
陽的な式eは以下のとおり表現できる。
out=(?(<15(ADD(ADD(ADD in in)in)in))50(MUL(MUL in in)in))
「算術プリミティブの生成」のセクションで説明されるように、式eは、コントラクト機能を表現するために必要な算術プリミティブを作成することに使用される。
[算術プリミティブの生成]
この段階で、インタプリタは、式eを生成するために使用される演算と、回路上でこれらの機能性を実現するために必要とされる構造との間の、1対1のマッピングを行う準備ができている。
回路を作成するために必要な重要なパラメータは、ビット幅nbit、すなわち、符号付き(又は符号なし)整数を表現するために使用されるビット数である。異なるコンピュータアーキテクチャは、異なるnbit値により特徴づけられる。クライアントがワーカの好適なビット幅値を知らない場合、その値は任意に選択され、図4に示されるように、さらなる情報と共に回路のヘッダに指定される。(コンパイルが特定のターゲットアーキテクチャに対して実行されるのと同様に、ビット幅値を知ることは、回路のより効率的な実装及び実行を結果としてもたらし得る。)
バージョンフィールドは、回路内の特定のビルディングブロックを作成するために使用される特定のアルゴリズムに関する重要な情報を与える。例示的な実装では、符号付き整数の2の補数2進表現が選択された。
[加算及び乗算演算]
加算及び乗算演算は、回路内の加算及び乗算ゲートに1対1でマッピングされる。2つのnビットワイヤ入力を所与として、加算ワイヤ出力はn+1ビットを必要とし、乗算ワイヤ出力は2nビットを必要とする。例えば、2つのnbitワイヤa及びb間の乗算は以下のように表現できる。
MUL[id id]TO[id
(回路内のあらゆる算術又はブールワイヤxが、値idにより一義的に識別可能である。二値変数については、値ゼロからカウントを開始する。)結果cは、2nbitビットで自動的に表現される。
[ブール演算]
ブールゲートのフルセットは、算術ゲートを使用して計算できる。2つのブール値a及びbを所与として、以下の等価が有効である。
・AND(a,b)=ab
・NAND(a,b)=1−ab
・OR(a,b)=1−(1−a)(1−b)
・NOR(a,b)=(1−a)(1−b)
・XOR(a,b)=(1−a)b+(1−b)a
XOR演算子以外、各ブールゲートは1つの乗算しか必要としない。全ての算術演算が1ビット幅ワイヤで実行される。
nビット幅入力に対するビット単位ブール演算は、n個の1ビット乗算(ANDに対して)又は加算(ORに対して)を必要とする。最下位(least significative)出力ビットから始めて、次いで各要素が2を乗算され、次の要素に加算されて、結果として生じるnビット整数値を構築する(「ワイヤ圧縮」のセクションを参照)。
[ワイヤ拡張]
ワイヤ拡張は、通常、算術ワイヤaをnビット出力ワイヤに翻訳するために使用され、nは、aで表すことができる最大値の2を底とする対数である。例えば、以下のコントラクトの部分について考える。
「Check if variable <a> is even」
=4の場合、このステートメントは、図5に示すようにワイヤ拡張を使用して実現される。aがaの最下位ビットを表現すると仮定すると、ステートメントの出力はa自体に等しい。この回路ビルディングブロックは以下のように表現できる。
EXPAND[id]TO[ida3 ida2 ida1 ida0
回路をより詳細に見ると、aの1ビットのみがさらなる処理に必要とされ、残りの1ビットワイヤは除去できることが明らかである。インタプリタは、コントラクトの残りで使用される個々の1ビットワイヤのみを生成してもよい。図5は、「Check if variable <a> is even」のステートメントを表現する4ビットワイヤエキスパンダの一実装を示す。
インタプリタは、最適化されたワイヤエキスパンダに特定のシンタックスを適用する。
EXPAND[id]TO[0−>ida0
すなわち、最下位1ビットワイヤ(すなわち、識別子番号ゼロ)のみが取り込まれ、それに識別子ida0が割り当てられる。nが大きいほど、最適化はより効果的であり得る。(この文脈では、最適化は、算術回路を表現するために使用される低水準ディレクティブを記憶又は伝送するための空間を節減する可能性として定義される。)
[ワイヤ圧縮]
ワイヤ圧縮は、1ビットワイヤaをnビット出力ワイヤに結合して戻すために使用される。
Figure 2021502636
このビルディングブロックは定数による加算と乗算で構成され、したがってQAP多項式のサイズは影響を受けない(Genaro R.ら(2013)のQuadratic Span Programs and Succinct NIZKs With PCPsを参照)。n=256であり、範囲[ida0,ida255]の識別子が連続していると仮定すると、このビルディングブロックを表現するための最適化された方法は以下のとおりである。
COMPRESS[ida0:ida255]TO[id
次いで、結果として生じるワイヤaはidにより識別される。
[否定演算]
否定演算は2つの変数を比較するために必要であり、なぜならば、それらの差が値ゼロと比較できるためである。nビットワイヤの否定は、定数−1による乗算として実現できる。この定数は、以下のように表現されなければならない。
Figure 2021502636
[ゼロ相当演算(Equal To Zero Operation)]
bitビットワイヤaに対するこのビルディングブロックは、以下のように実現できる。
・nbitビットに対するワイヤ拡張(a, ...,anbit−1
・各1ビットワイヤを否定する(a→b
・結果として生じるbワイヤを乗算する、すなわち、
Figure 2021502636
したがって、a=0の場合及びその場合に限り、1ビット変数c=1である。
[ゼロ比較演算(Compare To Zero Operation)]
「より大きい」演算は、簡素な等式ルールを使用して「より小さい」演算に変形できる。2の補数表現において、この演算は、2つの符号付き整数間の差が正か又は負か(あるいは、「以下」演算の場合にはゼロに等しいか)をチェックすることに対応する。差c=a−bの符号の判別は、2進表現における最上位(most significative)ビットxにより与えられる。負の数はx=1により特徴づけられ、正の数はx=0により特徴づけられる。
EXPAND[id]TO[nbit−1 −> x]
比較のタイプ(正対負)に依存して、2進値xは否定される必要がある。
[条件ステートメント]
高水準言語の条件ステートメントは、次の形式で表すことができる。
IF(S) S ELSE S
ステートメントSはコントラクトの入力に依存するため、分岐S及びSの双方が回路に実装されなければならない。論理フローを図6に示す。ステートメントSの(二値)出力に依存して、ステートメントS又はステートメントSが実行される。2進演算x+1は、xを否定するために使用される。
[定数の生成]
定数値は回路の入力ワイヤに依存しない。mul-by-const-c形式の専用の単項乗算ゲートを使用し、以下のさらなる回路を提供して、コントラクトにより必要とされる定数値を生成する。
・定数ゼロは、入力ワイヤに0を乗算することにより計算される。
(コントラクトは少なくとも1つの入力を有さなければならない。したがって、識別子1の入力(例えば、図7のin)が使用されて定数ゼロを生成することができる。)
・定数イチは、定数ゼロに1を加算することにより計算される。
・任意のさらなる定数cが、定数イチに対してmul-by-const-ciを使用することにより計算される。
定数ゼロ及びイチは常に回路に追加されるため、k個の任意の定数の実装はk+2個のゲートを必要とする。この処理を図7に示す。本発明の一実施形態により提供される定数生成器(generator)モジュールは、算術回路により使用される定数の作成を担う。この例において、3つの定数(C、C、及びC)に加えてデフォルトのイチ(1)及びゼロ(0)の値が生成される。
定数は、2の補数の標準で規定される既知のビット幅を有する。
次に、図8を参照し、本開示の少なくとも1つの実施形態を実施するために使用され得るコンピューティングデバイス2600の例示的な簡略ブロック図が提供される。種々の実施形態において、コンピューティングデバイス2600は、上で例示及び説明されたシステムのうち任意のものを実現するために使用されてもよい。例えば、コンピューティングデバイス2600は、データサーバ、ウェブサーバ、ポータブルコンピューティングデバイス、パーソナルコンピュータ、又は任意の電子コンピューティングデバイスとしての使用に対して構成されてもよい。図8に示すように、コンピューティングデバイス2600は、1つ以上のレベルのキャッシュメモリ及びメモリコントローラを有する1つ以上のプロセッサ(集合的に2602とラベル付けされている)を含み得、該プロセッサは、メインメモリ2608及び永続ストレージ2610を含むストレージサブシステム2606と通信するように構成され得る。メインメモリ2608は、図示のように、ダイナミックランダムアクセスメモリ(DRAM)2618及び読取専用メモリ(ROM)2620を含むことができる。ストレージサブシステム2606及びキャッシュメモリ2602は、本開示に記載されるトランザクション及びブロックに関連づけられた詳細などの情報の記憶のために使用され得る。プロセッサ2602は、本開示に記載される任意の実施形態のステップ又は機能を提供するために利用され得る。
プロセッサ2602は、1つ以上のユーザインターフェース入力デバイス2612、1つ以上のユーザインターフェース出力デバイス2614、及びネットワークインターフェースサブシステム2616と通信することもできる。
バスサブシステム2604は、コンピューティングデバイス2600の種々のコンポーネント及びサブシステムが意図されたとおり互いに通信することを可能にする機構を提供し得る。バスサブシステム2604は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態が複数のバスを利用してもよい。
ネットワークインターフェースサブシステム2616は、他のコンピューティングデバイス及びネットワークへのインターフェースを提供し得る。ネットワークインターフェースサブシステム2616は、他のシステムからデータを受信し、コンピューティングデバイス2600から他のシステムにデータを送信するためのインターフェースとして機能してもよい。例えば、ネットワークインターフェースサブシステム2616は、データ技術者がデバイスをネットワークに接続することを可能にし得、それにより、データ技術者は、データセンタなどの遠隔地にいる間にデバイスにデータを送信し、デバイスからデータを受信することができ得る。
ユーザインターフェース入力デバイス2612は、キーボードなどの1つ以上のユーザ入力デバイス;一体型マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティングデバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;音声認識システム、マイクロフォンなどのオーディオ入力デバイス;及び他タイプの入力デバイスを含んでもよい。一般に、用語「入力デバイス」の使用は、情報をコンピューティングデバイス2600に入力する全ての可能なタイプのデバイス及び機構を含むことが意図される。
1つ以上のユーザインターフェース出力デバイス2614は、表示サブシステム、プリンタ、又はオーディオ出力デバイスなどの非視覚的ディスプレイ等を含んでもよい。表示サブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイなどのフラットパネルデバイス、又は投影若しくは他の表示装置でもよい。一般に、用語「出力デバイス」の使用は、コンピューティングデバイス2600から情報を出力する全ての可能なタイプのデバイス及び機構を含むことが意図される。1つ以上のユーザインターフェース出力デバイス2614が使用されて、例えば、ユーザインターフェースを提示し、説明された処理及びその変形を実行するアプリケーションとのユーザ対話を、そのような対話が適切であり得るときに容易にしてもよい。
ストレージサブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供し得る基本プログラミング及びデータ構造を記憶するコンピュータ読取可能記憶媒体を提供し得る。アプリケーション(プログラム、コードモジュール、命令)は、1つ以上のプロセッサにより実行されたとき、本開示の1つ以上の実施形態の機能を提供してもよく、ストレージサブシステム2606に記憶されてもよい。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602により実行されてもよい。ストレージサブシステム2606は、本開示に従って使用されるデータを記憶するリポジトリをさらに提供してもよい。例えば、メインメモリ2608及びキャッシュメモリ2602は、プログラム及びデータの揮発性ストレージを提供することができる。永続ストレージ2610は、プログラム及びデータの永続的(不揮発性)ストレージを提供することができ、フラッシュメモリ、1つ以上のソリッドステートドライブ、1つ以上の磁気ハードディスクドライブ、関連するリムーバブルメディアを備えた1つ以上のフロッピーディスクドライブ、関連するリムーバブルメディアを備えた1つ以上の光学ドライブ(例えば、CD‐ROM又はDVD又はBlue‐Ray)ドライブ、及び他の同様の記憶媒体を含んでもよい。このようなプログラム及びデータには、本開示に記載される1つ以上の実施形態のステップを実行するプログラムと、本開示に記載されるトランザクション及びブロックに関連づけられたデータを含むことができる。
コンピューティングデバイス2600は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、又は以下に記載される任意の他のデバイスを含む種々のタイプのものでもよい。さらに、コンピューティングデバイス2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、ライトニングコネクタ等)を通じてコンピューティングデバイス2600に接続され得る別のデバイスを含んでもよい。コンピューティングデバイス2600に接続され得るデバイスは、光ファイバコネクタを受け入れるように構成された複数のポートを含んでもよい。したがって、このデバイスは、光信号を、処理のために、デバイスをコンピューティングデバイス2600に接続するポートを通じて伝送され得る電気信号に変換するように構成されてもよい。コンピュータ及びネットワークの絶えず変化する性質に起因して、図8に示されるコンピューティングデバイス2600の説明は、デバイスの好適な実施形態を例示する目的で特定の例としてのみ意図される。図8に示すシステムより多くの又は少ないコンポーネントを有する多くの他の構成が可能である。
上述の実施形態は、発明を限定するのでなく例示しており、当業者は、別記の特許請求の範囲により定義される発明の範囲から逸脱することなく多くの代替的な実施形態を設計可能であることに留意されたい。特許請求の範囲においては、括弧内に付されたいかなる参照符号も、特許請求の範囲を限定するものと解釈されてはならない。語「含んでいる」及び「含む」などは、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含める、又は、から構成される」ことを意味し、「含んでいる」は、「含めている、又は、から構成されている」ことを意味する。要素の単数の参照は、そのような要素の複数の参照を除外するものではなく、その逆もまた同様である。発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のうちいくつかは、1つの同じアイテムのハードウェアにより具現化されてもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが利するように使用できないことを示すものではない。
本明細書で引用される刊行物、特許出願、及び特許を含む全ての参照文献は、各参照文献が参照により援用されるよう個々及び具体的に示され、かつその全体を本明細書に明示されているのと同程度、本明細書で参照により援用される。これには、英国特許出願番号第GB1719998.5号、第GB1718505.9号、第GB1720768.9号が含まれる。

Claims (16)

  1. コンピュータにより実現される方法であって、
    算術回路を生成するソースコードの部分を処理するステップであり、
    前記ソースコードは高水準プログラミング言語で書かれ、
    前記算術回路は、前記ソースコード内に表された機能の一部又は全部を表現するように構成された1つ以上の算術ゲートを含む、ステップ、
    を含む方法。
  2. i)前記算術回路は前記ソースコードのマシン実行可能バージョンであり、結果を計算するように構成され、かつ/あるいは
    ii)前記ソースコードはスマートコントラクトである、
    請求項1に記載の方法。
  3. 前記処理するステップは、
    前記ソースコード内に提供された1つ以上の定数を評価して、ブール及び/又は算術演算子を含む1つ以上の式を提供するステップ
    を含む、請求項1又は2に記載の方法。
  4. 前記算術回路を使用してハードウェア及び/又はソフトウェア回路を提供するステップ、
    をさらに含む請求項1乃至3のうちいずれか1項に記載の方法。
  5. 前記算術回路は、算術ゲートに接続されたnビットワイヤを含む、
    請求項1乃至4のうちいずれか1項に記載の方法。
  6. 前記算術回路はアーキテクチャ非依存である、請求項1乃至5のうちいずれか1項に記載の方法。
  7. 当該方法は、前記ソースコードを前処理して1つ以上の定数を決定するステップをさらに含み、前記前処理するステップは、
    コメントを除去するステップと、
    ヘッダファイルからソースファイルにヘッダ宣言をインポートするステップと、
    複数のソースファイルをマージするステップと、
    ディレクティブ及びマクロを解決し、あるいは評価するステップと、
    のうち1つ以上を含む、請求項1乃至6のうちいずれか1項に記載の方法。
  8. 当該方法は、前記ソースコード内に宣言された全てのグローバル変数を検出するステップをさらに含み、グローバル変数は、関数、構造体若しくはクラス、定数、及び/又は実行のエントリポイントに関する、請求項1乃至7のうちいずれか1項に記載の方法。
  9. 当該方法は、
    シンボルのテーブルを生成して、前記ソースコード内に提供された各シンボル(すなわち、識別子)を前記ソースコード内に提供された宣言情報に関連づけるステップであり、前記テーブル内のシンボルはグローバル及び/又はローカルシンボルである、ステップ
    をさらに含む、請求項1乃至8のうちいずれか1項に記載の方法。
  10. 当該方法は、1つ以上の入力変数に適用される論理及び/又は算術演算の組み合わせとして1つ以上のアウト変数を表す算術及び/又は論理式をもたらす前記ソースコードの行ごとの評価を実行するステップをさらに含む、請求項1乃至9のうちいずれか1項に記載の方法。
  11. 前記行ごとの評価は、
    型を復号するサブステップ、
    式を復号するサブステップ、
    式を評価するサブステップ、及び/又は
    前記機能により必要とされるデータ構造のためのメモリを割り振るサブステップ
    を含む、請求項10に記載の方法。
  12. 前記式の前記算術及び/又は論理演算を算術ゲートにマッピングするステップ、
    をさらに含む請求項10又は11に記載の方法。
  13. 前記マッピングするステップは、
    ワイヤ拡張を実行するサブステップ、及び/又は
    ワイヤ圧縮を実行するサブステップ
    を含む、請求項12に記載の方法。
  14. 前記算術回路を使用して、前記回路の記述を提供する多項式のセットを含む二次プログラムを生成するステップ、
    をさらに含む請求項1乃至13のうちいずれか1項に記載の方法。
  15. 1つ以上の入力を使用する前記二次プログラムの実行のために前記二次プログラムをエンティティに提供するステップ、
    をさらに含む請求項14に記載の方法。
  16. 請求項1乃至15のうちいずれか1項に記載のステップを実行するように構成された、コンピュータにより実現されるシステムであって、好ましくは当該システムは、前記ソースコードの処理を実行するように構成されたインタプリタを含む、システム。
JP2020524517A 2017-11-09 2018-10-29 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 Pending JP2021502636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023173507A JP2023182741A (ja) 2017-11-09 2023-10-05 検証可能な計算のためのcライクなスマートコントラクトの算術的強化

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
GBGB1718505.9A GB201718505D0 (en) 2017-11-09 2017-11-09 Computer-implemented system and method
GB1718505.9 2017-11-09
GB1719998.5 2017-11-30
GBGB1719998.5A GB201719998D0 (en) 2017-11-30 2017-11-30 Computer-Implemented system and method
GB1720768.9 2017-12-13
GBGB1720768.9A GB201720768D0 (en) 2017-12-13 2017-12-13 Computer-implemented system and method
GBGB1801753.3A GB201801753D0 (en) 2018-02-02 2018-02-02 Computer-implemented system and method
GB1801753.3 2018-02-02
GB1805948.5 2018-04-10
GBGB1805948.5A GB201805948D0 (en) 2018-04-10 2018-04-10 Computer-implemented system and method
GBGB1806444.4A GB201806444D0 (en) 2018-04-20 2018-04-20 Computer-implemented system and method
GB1806444.4 2018-04-20
PCT/IB2018/058437 WO2019092545A1 (en) 2017-11-09 2018-10-29 Arithmetic enhancement of c-like smart contracts for verifiable computation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023173507A Division JP2023182741A (ja) 2017-11-09 2023-10-05 検証可能な計算のためのcライクなスマートコントラクトの算術的強化

Publications (1)

Publication Number Publication Date
JP2021502636A true JP2021502636A (ja) 2021-01-28

Family

ID=64100702

Family Applications (10)

Application Number Title Priority Date Filing Date
JP2020524517A Pending JP2021502636A (ja) 2017-11-09 2018-10-29 検証可能な計算のためのcライクなスマートコントラクトの算術的強化
JP2020524541A Active JP7221954B2 (ja) 2017-11-09 2018-10-29 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム
JP2020524532A Active JP7208989B2 (ja) 2017-11-09 2018-10-29 ブロックチェーン上に検証鍵を記録するためのシステム
JP2020524430A Active JP7234229B2 (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 After (9)

Application Number Title Priority Date Filing Date
JP2020524541A Active JP7221954B2 (ja) 2017-11-09 2018-10-29 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム
JP2020524532A Active JP7208989B2 (ja) 2017-11-09 2018-10-29 ブロックチェーン上に検証鍵を記録するためのシステム
JP2020524430A Active JP7234229B2 (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 分散コンピューティングシステム及び方法

Country Status (9)

Country Link
US (8) US20210377041A1 (ja)
EP (7) EP3707855A1 (ja)
JP (10) JP2021502636A (ja)
KR (5) KR20200079503A (ja)
CN (6) CN111345005A (ja)
SG (5) SG11202004149UA (ja)
TW (1) TWI806918B (ja)
WO (5) WO2019092544A1 (ja)
ZA (1) ZA202002575B (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
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
US11539527B2 (en) 2019-05-29 2022-12-27 International Business Machines Corporation Peer node recovery via approximate hash verification
US11711202B2 (en) 2019-05-29 2023-07-25 International Business Machines Corporation Committing data to blockchain based on 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 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111768187A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CA3091660A1 (en) * 2020-08-31 2021-11-03 Polymath Inc. Method, system, and medium for blockchain-enabled atomic settlement
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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305547A (ja) * 1995-05-11 1996-11-22 Oki Electric Ind Co Ltd Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
JP2006505055A (ja) * 2002-10-31 2006-02-09 エス・アール・シィ・コンピューターズ・インコーポレイテッド 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2011103133A (ja) * 2003-05-30 2011-05-26 Synopsys Inc 回路設計ツール
US20170039330A1 (en) * 2015-08-03 2017-02-09 PokitDok, Inc. System and method for decentralized autonomous healthcare economy platform
WO2017090041A1 (en) * 2015-11-24 2017-06-01 Ben-Ari Adi A system and method for blockchain smart contract data privacy

Family Cites Families (103)

* Cited by examiner, † Cited by third party
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
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
US6732336B2 (en) * 2001-10-11 2004-05-04 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
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
CN101331706B (zh) * 2005-12-13 2012-09-05 皇家飞利浦电子股份有限公司 安全阈值解密协议计算
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.
US8543885B2 (en) 2007-11-18 2013-09-24 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.
US9921813B2 (en) * 2012-11-07 2018-03-20 Koninklijke Philips N.V. Compiler generating operator free code
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
SI3073670T1 (sl) 2015-03-27 2021-07-30 Black Gold Coin, Inc. Sistem in postopek za osebno identifikacijo in verifikacijo
JP6364132B2 (ja) * 2015-03-31 2018-07-25 ナスダック, インコーポレイテッドNasdaq, Inc. ブロックチェーン取引記録のシステムおよび方法
US10911235B2 (en) 2015-03-31 2021-02-02 Nec Corporation 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 阿里巴巴集团控股有限公司 分布式流计算系统、方法和装置
US10936720B2 (en) 2015-07-10 2021-03-02 Nec Corporation Method and system for reliable computation of a program
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
US20170132619A1 (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
US20170140408A1 (en) 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
FR3043811B1 (fr) 2015-11-16 2017-11-10 Morpho Procede d'identification d'une entite
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
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
GB2561729A (en) 2016-02-23 2018-10-24 Nchain Holdings Ltd Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
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
WO2017148527A1 (en) 2016-03-03 2017-09-08 Nec Europe Ltd. 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
WO2017173399A1 (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
JP6920333B2 (ja) 2016-04-11 2021-08-18 エヌチェーン ホールディングス リミテッドNchain Holdings Limited ブロックチェーン上のセキュアなピアツーピア通信の方法
US20170300897A1 (en) * 2016-04-14 2017-10-19 American Express Travel Related Services Company, Inc. Systems and Methods for an Electronic Wallet Payment Tool
US10529042B2 (en) * 2016-04-18 2020-01-07 Rs Ltd. System and method for managing transactions in dynamic digital documents
TWI770022B (zh) * 2016-04-29 2022-07-11 安地卡及巴布達商區塊鏈控股有限公司 電腦實施之控制方法、系統及控制系統
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 杭州云象网络技术有限公司 一种多链场景下的区块链链间资产转移方法
US11362829B2 (en) 2017-01-06 2022-06-14 Koninklijke Philips N.V. Distributed privacy-preserving verifiable computation
JP6644195B1 (ja) 2017-01-06 2020-02-12 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 認証されたデータ上のピノキオ/トリノキオ
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 贵州大学 一种基于比特币协议的首价密封交易方法
WO2019033074A1 (en) * 2017-08-11 2019-02-14 Dragonchain, Inc. SYSTEMS AND METHODS OF INTERACTION WITH DISTRIBUTED REGISTERS
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305547A (ja) * 1995-05-11 1996-11-22 Oki Electric Ind Co Ltd Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
JP2006505055A (ja) * 2002-10-31 2006-02-09 エス・アール・シィ・コンピューターズ・インコーポレイテッド 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2011103133A (ja) * 2003-05-30 2011-05-26 Synopsys Inc 回路設計ツール
US20170039330A1 (en) * 2015-08-03 2017-02-09 PokitDok, Inc. System and method for decentralized autonomous healthcare economy platform
WO2017090041A1 (en) * 2015-11-24 2017-06-01 Ben-Ari Adi A system and method for blockchain smart contract data privacy

Also Published As

Publication number Publication date
CN111406379A (zh) 2020-07-10
JP2021502634A (ja) 2021-01-28
KR20200080265A (ko) 2020-07-06
JP2021502747A (ja) 2021-01-28
CN111316595A (zh) 2020-06-19
US20200366492A1 (en) 2020-11-19
US11635950B2 (en) 2023-04-25
KR20200086284A (ko) 2020-07-16
US11658801B2 (en) 2023-05-23
SG11202004146WA (en) 2020-06-29
US11575511B2 (en) 2023-02-07
US20230318805A1 (en) 2023-10-05
WO2019092561A1 (en) 2019-05-16
ZA202002575B (en) 2023-12-20
WO2019092542A1 (en) 2019-05-16
WO2019092543A1 (en) 2019-05-16
TW201923567A (zh) 2019-06-16
CN111345004B (zh) 2023-12-01
TW201923648A (zh) 2019-06-16
JP2023182741A (ja) 2023-12-26
EP4092953A1 (en) 2022-11-23
JP7208989B2 (ja) 2023-01-19
SG11202004147RA (en) 2020-06-29
SG11202004149UA (en) 2020-06-29
EP3707871A1 (en) 2020-09-16
KR20200086282A (ko) 2020-07-16
EP4312403A2 (en) 2024-01-31
JP7234229B2 (ja) 2023-03-07
US20210192514A1 (en) 2021-06-24
WO2019092544A1 (en) 2019-05-16
JP2023052834A (ja) 2023-04-12
US20200348916A1 (en) 2020-11-05
JP7221954B2 (ja) 2023-02-14
JP2023036962A (ja) 2023-03-14
US20230269070A1 (en) 2023-08-24
KR20200079503A (ko) 2020-07-03
CN111316594A (zh) 2020-06-19
SG11202004153UA (en) 2020-06-29
US20230318804A1 (en) 2023-10-05
CN117640170A (zh) 2024-03-01
JP2021502746A (ja) 2021-01-28
CN111345004A (zh) 2020-06-26
SG11202004148PA (en) 2020-06-29
TWI806918B (zh) 2023-07-01
EP3707623A1 (en) 2020-09-16
EP3707871B1 (en) 2022-05-18
EP3707852A1 (en) 2020-09-16
JP2023075152A (ja) 2023-05-30
JP7477674B2 (ja) 2024-05-01
JP2021502745A (ja) 2021-01-28
CN111345005A (zh) 2020-06-26
EP3707855A1 (en) 2020-09-16
JP2023179687A (ja) 2023-12-19
US20200266985A1 (en) 2020-08-20
US20210377041A1 (en) 2021-12-02
EP4312403A3 (en) 2024-02-21
EP3707856A1 (en) 2020-09-16
WO2019092545A1 (en) 2019-05-16
KR20200086281A (ko) 2020-07-16

Similar Documents

Publication Publication Date Title
US20230318804A1 (en) Arithmetic enhancement of c-like smart contracts for verifiable computation
US11868745B2 (en) System and method for compiling high-level language code into a script executable on a blockchain platform
US10699269B1 (en) System and method for smart contract publishing
Chin et al. Leo: A programming language for formally verified, zero-knowledge applications
US20230109846A1 (en) Computer-implemented systems and methods for serialisation of arithmetic circuits
Chakravarty et al. Functional blockchain contracts
KR20210074358A (ko) 공개 키 조합 검증을 포함하는 컴퓨터-구현된 시스템 및 방법
TWI837103B (zh) 電腦實施方法及系統
Bogdanov et al. ZK-SecreC: a Domain-Specific Language for Zero Knowledge Proofs
KR102398543B1 (ko) 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신
US11657391B1 (en) System and method for invoking smart contracts
MIKEK et al. SMT Theory Arbitrage: Approximating Unbounded Constraints using Bounded Theories
Sharkey Probabilistic proof-carrying code

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230331

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230606