Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7364583B2 - シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム - Google Patents
[go: Go Back, main page]

JP7364583B2 - シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム - Google Patents

シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム Download PDF

Info

Publication number
JP7364583B2
JP7364583B2 JP2020550875A JP2020550875A JP7364583B2 JP 7364583 B2 JP7364583 B2 JP 7364583B2 JP 2020550875 A JP2020550875 A JP 2020550875A JP 2020550875 A JP2020550875 A JP 2020550875A JP 7364583 B2 JP7364583 B2 JP 7364583B2
Authority
JP
Japan
Prior art keywords
symbol
arithmetic
encoding
arithmetic circuit
encoded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020550875A
Other languages
English (en)
Other versions
JP2021518715A (ja
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 GBGB1804948.6A external-priority patent/GB201804948D0/en
Priority claimed from GBGB1813863.6A external-priority patent/GB201813863D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of JP2021518715A publication Critical patent/JP2021518715A/ja
Priority to JP2023173527A priority Critical patent/JP7719839B2/ja
Application granted granted Critical
Publication of JP7364583B2 publication Critical patent/JP7364583B2/ja
Priority to JP2025124470A priority patent/JP2025173508A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/20Address generation devices; Devices for accessing memories, e.g. details of addressing circuits using counters or linear-feedback shift registers [LFSR]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • G11C29/56008Error analysis, representation of errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、概して、(例えば、ディスク又はメモリに格納されるとき)演算回路により使用されるデータフットプリント(data footprint)を削減する技術に関し、特に、圧縮技術、つまり本願明細書に記載の算術符号化技術を利用してシリアル化回路を生成する技術に関する。演算回路は、無損失方法で圧縮されて、後の時点で元の回路を完全に再生するために使用できるシリアル化回路を生成してよい。演算回路は、プログラムを生成するために使用されてよい。該プログラムの実行は、分散型コンピューティング環境の1つ以上のノードに委任できる。プログラムの正しい実行を保証するために、プロトコルが使用されてよい。ここで、第1コンピュータシステムは、プログラムの実行を第2コンピュータシステムに委任する。本発明は、特に、ブロックチェーンネットワークにおける使用に適するが、これに限定されない。
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。用語「Bitcoin」は、本願明細書では、Bitcoinプロトコルから派生した又はその変形である任意のプロトコルを含むと考えられる。
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
現在の研究の一分野は、「スマートコントラクト」の実装のためのブロックチェーンに基づくコンピュータプログラムの使用である。これらは、機械可読コントラクト又は合意の条項の実行を自動化するよう設計されたコンピュータプログラムである。自然言語で記述される伝統的なコントラクトと異なり、スマートコントラクトは、結果を生成するためにインプットを処理できるルールを含む機械実行可能プログラムであり、これは次に該結果に依存して動作を実行させる。
従って、クライアントコンピュータシステムが演算回路として表されるスマートコントラクトを生成し及び符号化技術、つまり算術符号化を使用して演算回路を圧縮し、それによりスマートコントラクトを格納する及び/又は実行する記憶空間要件を削減するために使用可能な圧縮演算回路を生成する(例えば、Bitcoinネットワークを用いて)検証可能な計算の枠組みを実装することが望ましい。一方で、圧縮演算回路は、ブロックチェーンネットワークへブロードキャストされ、非圧縮演算回路の代わりに(例えば、ブロックチェーンネットワークのノードに)格納できる。作業コンピュータシステムは、圧縮演算回路を取得し、(例えば、圧縮演算回路を伸長することにより)スマートコントラクトの実行可能バージョンを取得し、種々の検証可能な計算プロトコルに従いクライアントコンピュータシステムの代わりにスマートコントラクトを実行してよい。
このような改良されたソリューションがここで考案される。
したがって、本発明によると、添付の請求項において定められるシステム及び/又は方法が提供される。
本発明によると、ブロックチェーンネットワークのノードのためのコンピュータにより実施される方法であって、
スマートコントラクトを表す演算回路に基づき、シンボルセットを取得するステップと、
前記演算回路を格納するために、少なくとも以下:
前記シンボルセットのサブセットを符号化値範囲にマッピングするステップと、
前記符号化値範囲の中の符号化値を選択するステップと、
圧縮演算回路の中で、前記符号化値を有する前記シンボルセットの第1サブセットを表すステップと、
により、データ量を削減するステップと、
前記圧縮演算回路を、ブロックチェーンネットワークのノードに格納させるステップと、
を含む方法が提供され得る。
望ましくは、前記圧縮演算回路は、ヘッダを含み、前記ヘッダは、前記シンボルセットを異なる範囲の符号化値にマッピングするために使用可能な情報を符号化し、例えば第1シンボルは範囲[0-0.3)にマッピングし、第2シンボルは範囲[0.3、0.7)にマッピングし、第3シンボルは範囲[0.7,1)にマッピングする。前記異なる範囲は、重複しない範囲であってよく、その結果、特定の符号化値は正確に1つのシンボル又はシンボルセットに対応する。
望ましくは、前記符号化値は、0以上1未満の2進値のような2進数である。
前記符号化値は、前記符号化値が閾数のビットにより表されることに基づき選択されてよい。例えば、範囲内の2つの異なる2進値の間のように、より少ないビットで表すことのできる2進値が前記符号化値として選択されてよい。
前記符号化値を選択するステップは、
前記シンボルセットの異なるサブセットを前記符号化値範囲のサブ範囲にマッピングするステップと、
前記符号化値範囲の前記サブ範囲の中から前記符号化値を選択するステップと、
を含んでよく、
シンボルの前記第1サブセットおよび前記第2サブセットは、前記圧縮演算回路の中で前記符号化値により表される。
前記方法は、前記スマートコントラクトを表す演算回路に基づき、シンボルセットを取得するステップと、
インプットファイルをシリアル化する要求を受信するステップであって、前記インプットファイルは、前記演算回路を表すコードの複数の行を含む、ステップと、
前記複数のうちの少なくとも一部をスキャンして、前記シンボルセットの中のシンボルをデータ構造に追加するステップと、
を更に含んでよく、
前記シンボルセットは、前記データ構造から取得される。
前記方法は、前記シンボルセットの中のシンボルを前記シンボルと前記シンボルセットの別のシンボルとの間の差として符号化するステップ、を更に含んでよい。
望ましくは、前記演算回路は、演算子及び書き込み識別子を含み、前記シンボルセットは演算子であり、前記書き込み識別子は算術符号化方式に従い別個に符号化される。
前記方法は、前記演算回路を符号化するファイルをパースして、演算子セット及び前記演算子セットの少なくとも一部のパラメータセットを識別することにより、前記シンボルセットを取得するステップ、を更に含んでよい。
望ましくは、前記符号化値範囲は、前記サブセットがパターン内に生じる確率に対応する。例えば、2つのシンボルセットの間のように、より高い発生確率を有するシンボルセットは、比較的大きな対応する範囲の符号化値を有する。
望ましくは、前記シンボルセットの前記サブセットは、1つのシンボルである。
望ましくは、前記圧縮演算回路は、前記演算回路の代わりに前記ブロックチェーンネットワークにブロードキャストされる。
望ましくは、前記圧縮演算回路を受信した前記ブロックチェーンネットワークのノードは、前記圧縮演算回路から前記演算回路を決定することができる。
また、システムであって、プロセッサと、プロセッサによる実行の結果として、システムに請求項のいずれかに記載の方法を実行させる実行可能命令を含むメモリと、を含むシステムを提供することが望ましい。
また、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、コンピュータシステムの1つ以上のプロセッサによる実行の結果として、コンピュータシステムに請求項のいずれかに記載の方法を実行させる、非一時的コンピュータ可読記憶媒体を提供することが望ましい。
本発明の上述の及び他の態様は、本願明細書に記載の実施形態から明らかであり、及びそれを参照して教示される。本発明の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
本開示の一実施形態における、演算回路のシリアル化及びシリアル化解除を示す。 本開示の一実施形態における、検証可能な計算及び関連するアクターのフロー図である。 本開示の一実施形態による、ドメイン固有言語(DSL)符号から二次算術プログラム(QAP)へのワークフローの一例を示す。 本開示の一実施形態による、シンボルシーケンスの算術符号化を視覚化する図を示す。 本開示の一実施形態による、算術符号化を用いて演算回路を圧縮する処理の説明図を示す。 一実施形態において、少なくとも一実施形態による、算術符号化の圧縮特性に基づき演算回路のシリアル化に対する種々の解が実装され得る図を示す。 一実施形態による、バッファを用いて演算回路のシリアル化を制御する処理の説明図を示す。 一実施形態による、演算回路に基づく辞書の特性を利用するシンボルシーケンスのマルチシンボル表現を視覚化する図を示す。 一実施形態による、マルチシンボル符号化の図を示す。 更に圧縮可能なシリアル化回路の生成をもたらす、演算回路が識別子を集約することにより圧縮される図を示す。
以下は、本発明が一実施形態に従いどのように実施に動作し得るかの説明を提供する。本発明は、分散型コンピューティング環境の状況で実装されてよい。ここで、第1コンピューティングエンティティは、演算回路を利用して、実行が分散型コンピューティング環境のコンピューティングエンティティ(例えば、ブロックチェーンネットワークのノード)に委任できるプログラムを生成する。更に、プログラムの正しい実行は、計算上検証可能である。従って、演算回路に少なくとも部分的に基づき生成されたプログラムの実行を委任したクライアントコンピューティングエンティティは、プログラムが作業コンピューティングエンティティにより正しく実行されたことを検証できる。このように、分散型コンピューティング環境に対する種々の効率が実現されてよく、クライアントコンピューティングエンティティが別のエンティティの制御下でプログラムの実行をコンピュータシステムに委任し検証できるようにすることを含む。
以下により詳細に説明するように、算術符号化を用いて2進データストリームへと演算回路を圧縮し及びシリアル化するための可能な実装が説明される。2進データストリームは、無損失方法で、シリアル化解除され(de-serialised)及び伸長される。回路をシリアル化する種々の利点は、(例えば、演算回路の代わりにシリアル化回路を格納することにより)回路のデータ記憶フットプリント(footprint)の削減等を実現することである。例えば、ブロックチェーンネットワークのコンテキストでは、演算回路又は演算回路から導出されるプログラムは、ブロックチェーンネットワークの台帳に少なくとも部分的に符号化されてよい。本願明細書に記載の技術を用いて演算回路のデータ記憶フットプリントを削減することにより、ブロックチェーン台帳に格納されるデータ量を削減し得る。ブロックチェーン台帳は、ブロックチェーンネットワークの一部又は全部のノードにより複製され得るので、ブロックチェーンに格納されるデータのデータ記憶フットプリントの僅かな削減でも高く評価される。
特定の構造又はブロックの構築(building blocks)は、この転換を助けるために使用できる。1つ以上の実施形態では、この表現は、分散型の検証可能な計算を提供できる包括的なパイプラインを構築する最初のステップと考えられる。本例で提示されるブロックの構築は、本発明の実施形態により扱われる全部の可能な高レベル言語構成の包括的リストであることを意図しない。更に、提示される例の代替実装が提供され得る。これらは、当業者の範囲内に包含される。
私たちは、本発明の説明のための実施形態を提供する。しかしながら、重要なことに、これは、本発明が使用され得るアプリケーションの一例である。当業者は、本発明が他のコンテキスト及びアプリケーションで有利に使用可能であることを理解する。
私たちの例では、ユーザがドメイン固有言語(Domain Specific Language (DSL))を用いてアプリケーションを生成することを可能にするプロトコルを考える。アプリケーションが生成されると、その実行は、信頼されないパーティ(「作業者(worker)」又は「証明者(prover)」と呼ばれる)に委託できると同時に、その正確さが公に検証できる。プロトコルは、以下を保証する暗号プリミティブを利用する:
・完全性(Completeness)。つまり、プロトコルが正しく遵守されれば、誠実な検証者は出力の有効性を確信する。
・健常性(Soundness)。つまり、不正な証明者が出力の信憑性について誠実な検証者を説得することはできない。
・ゼロ知識(Zero-knowledge)。つまり、不正な証明者は、出力の有効性以外に何も分からない。
プロトコルの幾つかの利点は以下を含み得る:
・参加者間の通信が必要ないので、中間者攻撃(Man-in-the-middle attack)が防止される。
・ブロックチェーン技術の使用により、悪意あるノードがデータを改ざんすることを困難にする。
・信頼できるハードウェア装置のような信頼できる第三者が回避される。
・コントラクトの検証が、コードの再実行を意味しない。計算は、ネットワーク内の全てのノードにより複製されない。代わりに、正直な実行の証明が、公のブロックチェーンに格納され、検証目的でのみ使用される。
このようなシステムは、種々の種類のタスク及びプロダクトに対応する種々のアプリケーションを扱うことができる。この非集中化された分散型特性により、(Bitcoin)ブロックチェーンは、2つ(以上の)パーティ間の合意を解決する良好に適する環境を提供する。
このようなシステムは、非集中化暗号通貨システムにおいてプログラム可能性を提供し促進することを必要とする。しかしながら、従来、スマートコントラクトプログラミングは誤りの生じやすい処理であると認識されている。以下を参照:Delmolino, K., et al. (2015). Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab, and Juels, A., et al. (2013)、The Ring of Gyges: Using Smart Contracts for Crime。
従って、アプリケーションの記述及び読み取りを容易にするDSLがプログラマにより使用可能であること、従って、エラーを低減し、プログラミング処理中の時間、努力、コスト、及びリソースを削減することは有利である。理想的には、専門家でないプログラマが、暗号方法を実装する必要がなく、種々のアプリケーションを記述できる。代わりに、コンパイラ/インタープリタが、ユーザとブロックチェーンとの間で、ソースコードを暗号プロトコルに自動的にコンパイルする。これらは、特に本発明により解決される技術的問題である。
図1は、本開示により実装可能な一実施形態の説明図100である。本願明細書に記載の技術は、コンピュータプログラムの実行において利用される演算回路をシリアル化し(serialise)及びシリアル化解除する(de-serialise)ために利用されてよい。演算回路は、一実施形態に従い、クライアント(例えば、鍵生成及び検証)及び証明者(例えば、計算及び証明(proof)生成)のための暗号法ルーチンのセットにコンパイルされる2次算術問題(Quadratic Arithmetic Problem (QAP))を構築するために利用されてよい。クライアント及び証明者は、プロトコルを利用して、証明者がプログラムを正しく実行することをクライアントが効率的に検証できる方法で、プログラムの実行を証明者に委任してよい。シリアル化(serialised)回路は、演算回路と関連して必要な計算リソース(例えば、ハードディスク空間)を削減することにより、コンピュータシステムの動作を向上するために利用されてよい。一実施形態では、演算回路は、コードセットを含むシリアル化回路を生成するために圧縮されるシンボルセット(例えば、算術ゲート及び値)として表現される情報を含む。ここで、シンボルセットは、無損失方法でコードセットから導出可能である。圧縮回路の送信は、より多くの回路を送信可能にすることにより、コンピュータシステムの効率的データ伝送帯域幅を向上し得る。例えば、圧縮回路が演算回路のサイズを50%だけ削減した場合、効率的データ伝送帯域幅は2倍になってよい。これは、最大で2倍の圧縮演算回路が同じバイト数を用いて伝送できるからである(留意すべきことに、実際のデータ伝送帯域幅の向上は、圧縮されないパケットヘッダのようなデータオーバヘッドにより、2倍より少ないことがある)。演算回路のデータフットプリントの削減は、演算回路の使用に関連するコンピュータハードウェア要件を低減し得る。例えば、本願明細書に記載の回路を使用し、格納し又はその他の場合に相互作用するコンピュータシステムにより利用される短期メモリ(例えばRAM)データ記憶、及び/又はデータ帯域幅の量を低減する。圧縮回路の送信は、より多くの回路を送信可能にすることにより、コンピュータシステムの効率的データ伝送帯域幅を向上し得る。例えば、圧縮回路が演算回路のサイズを50%だけ削減した場合、効率的データ伝送帯域幅は2倍になってよい。これは、最大で2倍の圧縮演算回路が同じバイト数を用いて伝送できるからである(留意すべきことに、実際のデータ伝送帯域幅の向上は、圧縮されないパケットヘッダのようなデータオーバヘッドにより、2倍より少ないことがある)。演算回路のデータフットプリントの削減は、演算回路の使用に関連するコンピュータハードウェア要件を低減し得る。例えば、本願明細書に記載の回路を使用し、格納し又はその他の場合に相互作用するコンピュータシステムにより利用される短期メモリ(例えばRAM)データ記憶、及び/又はデータ帯域幅の量を低減する。
概して、演算回路Cは、フィールドFからの値を運び論理及び/又は演算ゲートを接続するワイヤを含む。一実施形態では、回路Cは、演算ゲート、入力ワイヤ、及び出力ワイヤを含むデータフィールドセットにより表すことができる。回路は、目標実行環境(例えば、プロセッサアーキテクチャ)に依存して実行の最適化を可能にする、バージョン番号、ワイヤの合計数、及びビット幅nbitのような情報を含むヘッダを更に含んでよい。演算回路の圧縮は、他のフィールドから決定可能なデータフィールドを除去すること、エントロピー符号化方式を適用すること、及びそれらの組み合わせにより、達成されてよい。種々の種類の簡略化ルールが、演算回路が符号化されるフォーマットに基づき圧縮ルーチンの一部として、使用されてよい。例えば、幾つかの情報は、要求されなくてよい。例えば、入力のためのワイヤ識別子、出力ゲートのワイヤ識別子、第1ゲートの第1入力、最終出力ワイヤ識別子は、圧縮されてよく(例えば、シリアル化回路の部分として明示的に符号化されなくてよい)、又はそれらの任意の組み合わせ。
種々の実施形態ではエントロピー符号化又は符号化方式は、(例えば、上述の簡略化ルールに基づき)演算回路又はその一部に適用される。エントロピー符号化は、ソースシンボルのシリアル化のための変数長コードテーブルを生成するために利用されてよい。ハフマン符号化は、コードテーブルを生成するために利用されてよい。コードテーブルでは、より高い頻度で生じるソースシンボルがより短いコードを用いて符号化され、より低い頻度で生じるソースシンボルがより長いコードを用いて符号化され、コードの長さは、ソースシンボル又はシーケンスの生じる頻度に反比例してよい。これらの技術を用いて、演算回路は、長期データ記憶媒体(例えば、ハードディスクドライブ)及び短期データ記憶媒体(例えば、ランダムアクセスメモリ)における記憶のために少ない計算リソースしか必要としないシリアル化回路へと圧縮できる。
上述のようにハフマン符号は、コードテーブルを生成するために利用されてよい。ハフマン符号は、無損失データ圧縮を達成するために使用できる特定種類の最適プレフィクスコードを表す。ハフマンアルゴリズムからの出力は、ソースシンボル、例えばファイル内の文字又はコマンドを符号化するための可変長コードテーブル(例えば、コードブック)であってよい。一実施形態では、アルゴリズムは、ソースシンボルからの可能な値毎に、推定された又は測定された発生確率又は頻度(重み)からテーブルを導出する。通常、より一般的なシンボルは、あまり一般的でないシンボルより少ないビットを用いて表される。一実施形態では、ハフマン符号化は、入力重みの数と線形な時間で、コードを見付けるよう効率的に実装できる。ここで、入力重みはソートされた順序である。この方針は、シンボルを別個に符号化する方法の中で最適であってよい。ハフマン符号化は、シンボル毎の表現を選択する特定の方法を用いてよく、結果としてプレフィクスコードを生じる。つまり、何らかの特定のシンボルを表すビット列は、任意の他のシンボルを表すビット列のプレフィクスには決してならない。
サイズnを有するアルファベットAからのシンボルセット{a,a,...,an-1}、及び通常、確率に比例するそれらの重み{p,p,...,pn-1}が与えられると、ルートからの最小重み経路長を有するツリーが要求される。出力コードC(P)={c,c,...,cn-1}は、最小重み経路長L(C)を有する2進コードワードのタプルである。
シャノンのソース符号化定理により定義されるように、ヌルでない確率を有する各シンボルaの情報コンテンツh(単位:ビット)は、h(a)=log(1/p)である。エントロピーH(単位:ビット)は、各シンボルの情報コンテンツのゼロでない確率pを有する全部のシンボルaに渡る、加重和である:
Figure 0007364583000001
エントロピーは、関連する重みを有する所与のアルファベットについて理論的に可能な最小コードワード長の指標である。通常、ハフマン符号は、ユニークである必要がない。所与の確率分布のハフマン符号のセットは、該確率分布のL(C)を最小化するコードの空でないサブセットである。
シリアル化回路は、無損失方法で拡張又は伸長ルーチンを用いて元の演算回路を導出するために使用できる。留意すべきことに、この文脈で「無損失(可逆、lossless)」は、圧縮データからソースデータが完全に導出可能である種類の圧縮アルゴリズムを表す。デジタル圧縮のコンテキストでは、無損失圧縮は、ソースビットストリームの各ビットがシンボルセットを含む圧縮データから導出可能であることを表してよい。反対に、損失圧縮(不可逆圧縮、lossy compression)は、圧縮データが、圧縮データからソースビットストリームの各ビットを導出できない種類の圧縮アルゴリズムを表してよい。損失圧縮の一例は、MP3オーディオ符号化フォーマットである。
図2は、本開示の一実施形態に含まれる、検証可能な計算及び関連するアクターのフロー図200の一例を示す図である。図2に示すように、検証可能な計算の図200は、クライアントノード240、作業者(例えば、証明者)ノード250、及び検証者ノード260を含んでよく、これらは本開示の一実施形態における検証可能な計算プロトコルのステップを実行することに関連する。実施形態では、クライアントノード240、作業者ノード250、又は検証者ノード260のうちの1つ以上は、ブロックチェーンネットワーク内のノードである。
一実施形態では、設定段階は、ドメイン固有言語(domain-specific language (DSL))でコントラクトを記述するステップを含む。インタープリタは、クライアントノード240であってよく、ソースコードを入力として取り入れ、フィールドFからのデータを運び加算及び乗算ゲートに接続する「ワイヤ」で構成される演算回路Cを生成する。演算回路自体は、ハードウェア回路ではなく、有効非巡回グラフ(directed acyclic graph (DAG))であってよい。ワイヤは、DAG内のエッジであってよい。しかしながら、演算回路は、ワイヤ及び論理ゲートを有する物理的回路で実装され得ることが考えられる。202で、クライアントノード240は、汎用言語(general-purpose language (GPL))で記述された計算Pを、演算回路Cへとコンパイルする。実施形態では、クライアントノード240は、演算回路C及び入力xを作業者ノード250に供給する。
回路Cから、本開示の一実施形態は、元の回路Cの完全な記述を提供する多項式のセットを含む二次プログラムQを生成できる次に、2次プログラムを実行し及び検証するとき作業者ノード250及び検証者ノード260により使用されるべき公開パラメータ(public parameter)が生成されてよい。
204で、作業者ノード250は、入力xについて回路C又は2次プログラムQを実行し、出力がyであることを主張する。幾つかの実施形態では、作業者ノード250(つまり証明者)は、{C,x,y}について有効なトランスクリプトを取得することが期待される。従って、206で、作業者ノード250は、トランスクリプトを符号化する。幾つかの例では、有効なトランスクリプト{C,x,y}は、回路ワイヤへの値の割り当てである。その結果、入力ワイヤに割り当てられた値はxのものであり、中間値はCの中の各ゲートの正しい動作に対応し、出力ワイヤに割り当てられた値はyである。主張された出力が正しくない場合(つまり、y≠P(x))、{C,x,y}の有効なトランスクリプトは存在しない。
208で、作業者ノード250は、クライアントノード240に出力yを提供する。実施形態では、公開評価鍵EK、及び公開検証鍵VKは、jクライアントノード240により選択された又はクライアントノード240からのシークレット値sを用いて導出される。実施形態では、作業者ノード250は、これらの公開鍵を用いて、特定の入力xに対して計算を評価する。実施形態では、出力y、内部回路ワイヤの値、及びEKは、正当性の証明(proof-of-correctness)πを生成するために使用される。証明πは、ブロックチェーンに格納され、複数のパーティ(例えば、検証者ノード260)により検証され、作業者ノード250は、複数のパーティと個別に相互作用する必要がない。この方法では、210で、検証者ノード260は、公開検証鍵VK及び証明πを用いて支払いトランザクションを検証でき、それによりコントラクトを有効にする。
検証可能な計算は、計算の証明の生成を可能にする技術である。一実施形態では、このような技術は、本願明細書では作業者と呼ばれる別の計算エンティティに入力xについて関数fの評価を委託するために、クライアントにより利用される。幾つかの例では、クライアントは計算上制限され、クライアントは関数の評価を実行できない(例えば、クライアントに利用可能な計算リソースを用いる計算の期待される実行時間が、最大許容閾値を超える)。しかしながら、このような必要はなく、クライアントは、通常、入力xについての関数fの評価を、計算実行時間、計算コスト(例えば、関数の評価を実行するための計算リソースを割り当てる経済的コスト)、等のような任意の適切な基準に基づき、言わば委任してよい。
一実施形態では、作業者は、本開示の他の場所でより詳細に記載されるようなブロックチェーンノードのような任意の適切な計算エンティティである。一実施形態では、作業者(例えば、ブロックチェーンノード)は、入力xについて関数fを評価し、出力y、及び上述のクライアント及び/又はブロックチェーンネットワークの他のノードのような他の計算エンティティにより検証可能な、出力yの正しさの証明πを生成する。証明は、引数(argument)とも呼ばれてよく、上述の作業者により生成された出力の正しさを決定するために、入力xに対して関数fを再計算する代わりに、証明の正しさを検証することにより、実際の計算を行うより早く検証でき、従って、計算オーバヘッドが削減できる(例えば、パワーオーバヘッド、及び計算リソースへの電力供給及び運用に関連するコストを削減する)。ゼロ知識(zero-knowledge)の検証可能な計算では、作業者は、クライアントに、作業者が特定の特性を有する入力を知っていることのアテステーション(証明、attestation)を提供する。
知識のゼロ知識証明の効率的な変形は、zk-SNARK(Succinct Non-interactive ARgument of Knowledge)である。一実施形態では、zk-SNARKに基づく全部のペアリングは、作業者が汎用グループ演算を用いて多数のグループ要素を計算し、検証者が多数のペアリング積の式を用いて証明をチェックする処理を含む。一実施形態では、線形対話証明は有限フィールドに対して機能し、作業者の及び検証者のメッセージは、フィールド要素のベクトルを含み、符号化し、参照し、又はその他の場合にはフィールド要素を決定するために使用可能な情報を含む。
一実施形態では、本願明細書に記載のシステム及び方法は、ブロックチェーンのマイナー(例えば、ノード)が計算(例えば、入力xについての関数fの評価)を1回実行し、出力の正しさを検証するために使用可能な証明を生成することを可能にする。ここで、証明の正しさを評価することは、関数を評価することより計算上安価である。この状況では、演算及びタスクのコスト(つまり、どれくらい高価か)は、演算又はタスクを実行する計算上の複雑さを表してよい。一実施形態では、計算上の複雑さは、ソートアルゴリズムを実行するときの、平均的な計算コスト又は最悪の計算コストを表す。例えば、ヒープソートアルゴリズム又はクイックソートアルゴリズムであって、両方とも平均的な計算コストO(n log n)を有するが、クイックソートは最悪の計算コストO(n)を有し、ヒープソートは最悪の計算コストO(n log n)を有する。一実施形態では、入力xについて関数fを評価するための平均的な計算コスト及び/又は最悪の計算コストは、証明の正しさを評価するものより悪い。従って、本願明細書に記載のシステム及び方法の使用は、非常に有利であり、例えば、更に計算上高価なコントラクトを実行可能にでき、例えば、コントラクトは、ブロックチェーンを検証するために必要な時間を比例的に増大しなくてよい。更なる利点は、検証者システムの電力消費の削減を含み得る。これにより、検証者コンピュータシステムの効率を向上し、証明の正しさを評価するときの検証者コンピュータシステムを運用することに関連するエネルギコストを削減する。
一実施形態では、検証鍵V又はその部分は、ゼロ知識プロトコルの設定段階で生成された公開パラメータから抽出でき、証明π、及び入力/出力データと一緒に、作業者により提供された宣言された正しさの証明の計算を検証するために使用できる。例えば、以上及び以下に記載したように、ロックスクリプトが検証鍵Vを変更からセキュアに守ることを可能にし、及び証明πの有効性をチェックするシステム及び方法は、トランザクション検証の間に、ブロックチェーン上でゼロ知識プロトコルの実行を可能にする。従って、本開示は、計算の検証で使用される要素を格納する(例えば、Bitcoinに基づくネットワークで)ブロックチェーンスクリプトを用いて検証段階を実行するシステム及び方法を提案する。
図3は、本開示の一実施形態による、ドメイン固有言語(DSL)符号から二次算術プログラム(QAP)へのワークフローの一例300を示す。具体的に、図3は、変換器204によりGPLコード306に変換されるDSLコード302を示す。GPLプリコンパイラ308(プリプロセッサとしても知られる)は、GPLコード306により参照される外部ライブラリ310を組み入れて、GPL前処理コード312を生成する。GPL前処理コード312は、演算回路314へと変換される。演算回路314は、シリアル化回路320を生成するために圧縮された縮小演算回路316を生成するよう最適化される。シリアル化回路320から、QAP多項式318が導出される。
一実施形態では、ドメイン固有言語(DSL)コード302は、正確な意味論を有する公式言語で記述されたアプリケーションである。一実施形態では、コード302は条件セットを含み、DSLコード302の結果は、条件セットの充足に依存する。アプリケーションの一例(例えば、スマートコントラクト)は、入力として被保険者の保険料と保険会社による被保険者への可能な補償を取り入れる保険契約である。被保険者がスマートコントラクトの期間中に損失を受けた場合(例えば、第1条件の充足)、スマートコントラクトの実行は、保険会社に保険料を分配し、被保険者に損失の補償を分配する。他方で、被保険者がスマートコントラクトの期間中に損失を受けなかった場合、スマートコントラクトの実行は、保険会社に保険料を分配し、保険会社に可能な補償を分配する。
一実施形態では、変換器304は、ソフトウェアプログラムである。該ソフトウェアプログラムは、実行の結果として、DSLで記述されたDSLコード302のような条件セットを受信し、DSLコードを、GPLコード306のようなGPLソースコードに変換する。一実施形態では、GPLコード306は、C++プログラムのようなGPLプログラムであり、DSLコード302で定義されたコードを含む。幾つかの例では、汎用プログラミング言語又は汎用言語(general-purpose language (GPL))は、DSLと対照的に、広く適用可能である。汎用プログラミング言語の例は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++を含み、本開示の実施形態で参照されることがあり、命令型、オブジェクト指向型の、汎用プログラミング機能を有するが、低レベルメモリ操作のための機能も提供する汎用プログラミング言語である。留意すべきことに、図3のコンテキストでは、代替として、「コード」は、記載されるコンテキストに基づき、実行可能コード(例えば、オブジェクトコード)、ソースコード、それらの両方、又はそれらの組み合わせを表してよい。
一実施形態では、GPLプリコンパイラ308は、GPLコード306及び必要な外部ライブラリ310を処理してスタンドアロン型GPLコード306前処理コード312を生成するコンピュータ実行可能プログラムである。実施形態では、GPLプリコンパイラ308は、GPLコード306内に見付かった定数表現及びレジスタシンボルを評価する。
一実施形態では、外部ライブラリ310は、呼び出しによりGPLコード306により利用される、予め記述されたサブルーチン、関数、クラス、コンテナ、値、及び/又は可変型の集合である。例えば、外部ライブラリ310を呼び出すことにより、GPLコード306は、機能自体を実装する必要がなく、該ライブラリの機能を得る。
一実施形態では、GPL前処理コード312は、式及び演算子のセットを含む。演算子は、算術演算子(例えば、加算(+)、乗算(*)、等)、比較演算子(例えば、未満(<)、等しい(=)、以上(≧)、等)、条件文(例えば、if-then(?,:))、又は論理演算(例えば、AND(&&)、OR(||)、NOT(!)、XOR(○の中に+)、等)を含んでよい。幾つかの実施形態では、メイン関数は、所定の名称及びフォーマットを有するよう生成される。
一実施形態では、演算回路314は、変数セットに対するDAGである。一実施形態では、0の入次数(in-degree)DAGの全てのノードは、変数(例えば、x)を表す入力ゲートであり、DAGの全ての他のノードは、和ゲート(+)又は積ゲート(×)である。実施形態では、全てのゲート(ノード)は、1の出次数(out-degree)を有し、従って基本のグラフは有向木である。実施形態では、演算回路314は、複雑さの2つの指標:サイズ及び深さを有する。幾つかの例では、演算回路の「サイズ」は、演算回路314内のゲートの数に基づく。幾つかの例では、演算回路の「深さ」は、演算回路内の最長有向パスの長さに基づく。
一実施形態では、縮小演算回路316は、入力セットが与えられるとDSLコード302の中で指定されるような、条件セットの結果を決定するために使用可能な縮小又は最小有向非巡回グラフ(directed acyclical graph (DAG))である。幾つかの実施形態では、縮小演算回路316は、最小化された(つまり、最小次数に縮小された)演算回路である。幾つかの実施形態では、最適演算回路は、必ずしも最小演算回路ではなくてよい(例えば、回路内の算術演算の数及び種類に依存して、特定のより大きな演算回路が、より大きな演算回路より速いと評価されてよい)。また、このような実施形態では、縮小演算回路316は、(例えば、最大速度、より少ないメモリ使用、最大効率プロセッサ利用率、等について)最適化されるが、必ずしも最小化された演算回路ではない。縮小演算回路316は、英国特許出願番号GB1718505.9号に記載された技術を用いて生成されてよい。
縮小演算回路316のような演算回路は、本願明細書に記載された技術に従い圧縮されて、シリアル化回路320を生成してよい。シリアル化回路320は、格納され読み出される必要のあるコードテンプレート又は標準アプリケーションの場合に使用されてよい。シリアル化回路320を利用することにより、パーティは、新しいアプリケーションが生成される度に、GPLから回路のインスタンスを生成する必要を除去できる。それにより、クライアント及び証明者がそのようなアプリケーションの特定のコードテンプレート又は部分を再利用するプロトコルの効率を向上する。シリアル化回路320は、算術的演算子種類のようなデータ構造内の要素の最頻出要素に対してエントロピー符号化を用いて生成されてよい。シリアル化解除及び伸長のための命令(例えば、シリアル化コードをソースシンボルにマッピングするコードブック)は、シリアル化回路の受信者がソース回路を再構成できるようにするシリアル化ビットストリームに埋め込まれてよい。
一実施形態では、QAP多項式318は、元の演算回路(例えば、図3の演算回路314)の完全な記述を提供する数学的な式の中に表現された変数及び係数を有する1つ以上の式である。実施形態では、QAP多項式のうちの多項式は、演算回路のルートにおけるそれらの評価の観点から定義される。例えば、Gennaro, R. et al., Quadratic Span Programs and Succinct NIZKs without PCPs (2013)に記載されている。実施形態では、QAP多項式は、スマートコントラクトの表現として、ブロックチェーントランザクションのロックスクリプト内に符号化される。実施形態では、ロックスクリプトは、実行されると、(例えば、ロックスクリプトの実行の結果として)パラメータ値のセットを受信する。パラメータ値のセットは、スマートコントラクトの結果を決定させるために、QAP多項式に変数として入力される。
実施形態では、GPL多項式308は、演算ゲートを有する演算回路であってよいGPL前処理コード312を生成する。しかしながら、複雑な演算回路も、条件及びフロー制御文により、論理サブモジュールを埋め込むことに留意する。
図4は、本開示の一実施形態による、シンボルシーケンスの算術符号化を視覚化する図400を示す。一実施形態では、シンボルシーケンスのための算術符号化を生成する処理は、図4に示す図と結合して実行できる。算術符号化は、無損失データ圧縮で使用されるエントロピー符号化の一種である。シンボルセットは、通常、ASCIIコードのように、シンボル当たり固定数のビットを用いて表現され、頻繁に使用されるシンボルは、より少ないビットにより格納されてよい。ハフマン符号化と異なり、算術符号化は、メッセージ全体を0と1の間の範囲(0≦x<y<1)のような任意の精度範囲[x,y)へと符号化する。
例えば、図4は、任意の精度範囲内で使用して符号化され得るシンボルシーケンス{a,a,a}の算術符号化を示す。一実施形態では、シンボルは、0と1との間の範囲(例えば、端点を含む及び/又は除く)で符号化される。一実施形態では、シンボルは、端点を含み及び/又は除いて0と2との間の範囲で符号化される。図4によると、一例は、シーケンス内の第1シンボルに対応する値範囲セットを含む。例えば、第1シンボルに対応する範囲[0,x)内の値はaであり、第1シンボルに対応する範囲[x,y)内の値はaであり、第1シンボルに対応する範囲[y,1)内の値はaである。一実施形態では、値範囲の各々は、シンボルシーケンス内の第2シンボルに対応するために、更に分割できる。例えば、及び図4に従い、x<w<x<y=yとする。次に、本例に従い、以下の2シンボルシーケンスが、以下の値範囲を用いて符号化できる。
Figure 0007364583000002
種々の実施形態では、算術コーダは、確率pで、サイズnを有するアルファベットAから任意の所与のシンボルセットaに対して準最適出力を生成できる。ここで、最適値は-logである。データモデルは、メッセージのシンボルの中にどんなパターンが見付かるかを予測することにより、定義できる。正確な予測は準最適解を保証する。一実施形態では、適応モデルは、前のシンボルに基づき、シンボルの現在の確率のそれらの推定を変化させる。一実施形態では、デコーダは、エンコーダと同じモデルを利用する。
シンボルの符号化及び復号は、以下に詳述する種々の技術を用いて実行できる。符号化処理の各ステップjにおいて、新しいシンボルは、現在の間隔[x,y](本願明細書の他の場所に記載されるように、端点を除く及び/又は含む実施形態は、本開示の範囲内にあると考えられる)及び現在の確率pを用いて符号化できる。種々の実施形態によると、p(a)は、ステップjにおいて、シンボル確率aとして定義される。汎用表記pは、一実施形態では、適応モデルが使用されない場合及びその場合にのみ有効である。エンコーダは、現在の間隔をサブ間隔に分割し、各サブ間隔は、該シンボルの確率に比例する、現在の間隔の部分を表す。確率p(a)を有する入力シンボルaのサブ間隔は、更新された間隔[xj+1,yj+1]になる:
Figure 0007364583000003
シーケンスの全部のシンボルが符号化されると、結果として生じる間隔は、シンボルシーケンス全体に対応する(例えば、明確に識別する)。図4に示すように、間隔に包含される値は、「最終範囲」とマークされる(例えば、端点を含む及び/又は除く)。例えば、以下のテーブルは、一実施形態では、シンボルシーケンスを反映し、対応する範囲は前記のシーケンスを表す:
Figure 0007364583000004
更に、留意すべきことに、図4に示された間隔又は値範囲は、必ずしも縮尺通りではなく、図4は特定の間隔が他の間隔に対して比例することを意味しない。一実施形態では、間隔は、シンボルの発生確率に(例えば、値を丸め込んだ結果として特定の精度閾値に)比例する又は実質的に比例する。一実施形態では、ステップj+1におけるシンボルの確率は、ステップjにおける先行するシンボルに依存する。一実施形態では、ステップjにおけるシンボル発生確率は、無記憶性である確率を有する。ここで、j+1におけるシンボル発生分布は、任意の先行するシンボルの値に依存しない。
一実施形態では、シンボルシーケンスは、間隔(又は間隔内にある任意の部分)及び確率モデルを知ることにより再構成できる。ストリームが、例えば確率pEOSを有するEOS(end of stream)シンボルaEOSを用いて内部的に終了しない場合、復号処理を中断するために外部メカニズムが利用されてよい。幾つかの場合には、異なる等しく短い10進分数が、同じ間隔を表すために使用できる。従って、少ないビットを有する2進表現は、一実施形態により、圧縮係数を最大化するために選択できる。例えば、範囲[0.65,0.67)の中の2つの分数は、大きく異なる数のビットにより表すことができる。それにより、シーケンスの圧縮係数に影響を与える:
Figure 0007364583000005
従って、一実施形態では、シンボルシーケンスを符号化するために使用されるビットの数を削減する(又は最小化する)ために技術が利用される。整数個のビットが2進符号化で使用される実施形態では、算術エンコーダは、圧縮メッセージのサイズに渡り、1ビットの最大オーバヘッドを導入し得る。算術コーダは、デコーダが適合可能な精度ψの固定限度で動作し、その精度で、分数を最も近い等価値に丸め込んでよい。例えば、等しい確率p=1/3を有するこれらのシンボルは、[0,1)の中の3つの間隔を正しく表すために、無限の精度を要求する。一実施形態では、精度値が選択され、例えばψ=8ビットであり、以下に示すように精度において2進範囲を計算するために使用できる:
Figure 0007364583000006
一実施形態では、1つ以上の数字が現在符号化範囲の2つの限度の間で共有されるとき、これらの数字は、出力ストリームに付加され廃棄される。符号化範囲内の残りの数字は左にシフトされ、一方で、新しい数字が右に付加される。上限には1、下限には0である。従って、システムは、計算の精度にもやは貢献しないビットを追い払うことにより、ψビットの精度で動作し続ける。
圧縮の上限に関して、サイズL及びアルファベットAについてシンボル頻度f(a)のメッセージが与えられると、無限精度の符号化部分は、L個のビットで表すことができる:
Figure 0007364583000007
LCをLで割ると、メッセージの自己エントロピー(self-entropy)を得る。つまり、算術符号化は、エントロピーに漸近的に近い符号化を行う:
Figure 0007364583000008
従って、算術符号化は、実質的に、シンボル確率が入力メッセージのものと同じである確率モデルのエントロピーに近い符号化が可能である。
留意すべきことに、算術符号化は、一度に1つのシンボルを圧縮するのではなく、従って、エントロピー限度に任意に近くなる。これに対して、ハフマン符号化は、全部のシンボル確率が2のべき乗でない限り、エントロピー限度に近づかない。以下の例を考える:低いエントロピー(p=0.95、p=0.05)を有する2つのシンボル{0,1}。ハフマン符号化は1ビットを各値に割り当て、結果として入力と同じ長さのコードを生じるが、算術符号化は、以下の最適圧縮比に近づく:
Figure 0007364583000009
図5は、本開示の一実施形態による、算術符号化を用いて演算回路を圧縮する処理500の説明のための例を示す。処理500(又は本願明細書に記載の任意の他の処理、又はその変形及び/又は組み合わせ)の一部又は全部は、図4に関連して記載した技術に従い実行されてよい。処理500は、算術符号化からシリアル化回路を生成するために実施できるステップの説明である。本願明細書に記載の算術符号化技術を用いて演算回路をシリアル化した結果として、演算回路の代わりに、演算回路の圧縮表現が格納できる。例えば、一実施形態では、シリアル化回路は、演算回路の代わりに、ブロックチェーンのノードへブロードキャストされる。それにより、ブロックチェーンネットワークのノード(例えば、ブロックチェーン台帳のコピーを保持するノード)のデータ記憶要件を低減する。
一実施形態では、システムは、演算回路(例えば、データファイルの中の行コードとして表される)を取得し、演算回路をパースして、演算子及び演算子の入力及び/又は出力であるワイヤ識別子を識別する。一実施形態では、演算子及び識別子は、異なるデータ構造にプッシュされ、その中に格納される。図5に示す処理500は、上述のように異なる種類の回路データを符号化するのに適してよい。一実施形態では、処理500は、演算子及び識別子(例えば、入力識別子)について別個に実行される。
一実施形態では、システムは、スマートコントラクトを表す演算回路の第1の1つ以上のシンボルを取得する(502)。幾つかの場合には、処理は、一度に1つのシンボルを選択し、個々のシンボルを範囲にマッピングするステップを含む。一方で、他の場合には、複数のシンボルが収集され、複数のシンボルは、特定の間隔範囲に集合的にマッピングされる。一実施形態では、シンボルは、全部、特定種類である(例えば、全部が演算子、全部が入力ワイヤ)。
一実施形態では、システムは、間隔範囲のサブ範囲へのシンボルのマッピングを取得する504。初期間隔範囲は、グローバル最小値からグローバル最大値までに及んでよい(例えば、全部の符号化シンボルがグローバルmin/max値の範囲内に含まれる)。特に断りの無い限り、ここで以上及び以下に図5と関連して記載した端点は、含まれ及び/又は含まれなくてよい(例えば、範囲は、下限を含み、上限を除いてよい)。一実施形態では、グローバル最小値が0(含む)であり、グローバル最大値が1(除く)であり、従って、全体の値範囲は、1未満の値を有する2進小数により表される。マッピングは、初期間隔範囲を重複しないサブ範囲のセットに分割するマッピングテーブルを表す。従って、サブ範囲は、集合的に初期間隔範囲全体をカバーする。サブ範囲の各々は、一実施形態では、シンボル又はシンボルのセットにマッピングされる。一実施形態では、システムは、マッピング及び第1の1つ以上のシンボルに基づき、次の間隔範囲を決定する506。システムは、一実施形態では、第1の1つ以上のシンボルに対応するマッピングテーブルエントリを発見することにより、決定を行い、次の間隔範囲になるべき第1の1つ以上のシンボルに対応するサブ範囲を選択する。一実施形態では、マッピングが失敗した場合(例えば、第1の1つ以上のシンボルに対するマッピングテーブルエントリが存在しない)、処理はエラーにより早く終了する。例えば、グローバル範囲が[0,1)である場合、以下のマッピングテーブルが、シンボルセットについて存在してよい:
Figure 0007364583000010
一実施形態では、システムは、第1の1つ以上のシンボルのサブ範囲を決定した後に、符号化すべき更なるシンボルが存在するか否かを決定する508。一実施形態では、(例えば、第1の1つ以上のシンボルがデータ構造からポップされた後に、)データ構造の中に追加シンボルが存在するか否かを決定することにより、決定が行われる。追加シンボルが存在する場合、システムは、一実施形態では、シンボルの、前に決定したサブ範囲のサブ範囲へのマッピングを取得する。一実施形態では、サブ範囲は、以下の場合のように、比例関係で前の範囲と同じである:
Figure 0007364583000011
一実施形態では、システムは、この第2マッピングを使用して、1つ以上のシンボルの第2セットについて、これまで処理したシンボルに対応する間隔範囲を決定する。一実施形態では、これらのステップは、残されたシンボルがなくなる(シンボルを格納するデータ構造が空になる、ファイルの終わりに達する、等)まで、繰り返される。その結果、最後のサブ範囲が保持され、値を符号化するために使用される。例えば、前の例を続けると、シンボルセット全体がaである場合、最後の間隔範囲は[0.7,0.8)である。従って、本例では、0.7(含む)と0.8(除く)の間の任意の2つの(binary)10進数がシンボルaを表すために使用できる。
最後の間隔範囲が取得されると、システムは、最後の間隔範囲の中の値を用いてシンボルを符号化する512。間隔範囲の中の任意の値は、シンボルを符号化するのに適する。例えば、前の例を続けると、aを符号化するための有効な値の例は、0.7、0.75、及び0.7979...を含む。aを符号化するための無効な値の例は、0.6969...を含む。シンボルセットを符号化するための複数の適した値が存在し得るので、圧縮率を最大化するために、より少ないビットによる2進表現が選択できる。
一実施形態では、演算子及び/又はワイヤ識別子(又はそれらの部分)は、図5に従い説明されたようにシリアル化されてよい。結果として生じるシリアル化回路は、演算回路の代わりに、例えばブロックチェーン台帳に、格納される514。それにより、提示されたスマートコントラクトを符号化するための記憶要件を低減する。
図6は、一実施形態において、少なくとも一実施形態による、算術符号化の圧縮特性に基づき演算回路のシリアル化に対する種々の解が実装され得る図600を示す。一実施形態では、シリアル化処理は、図6を参照して、ビットバッファとして、ビット毎の演算を提供するバッファにより管理される。一実施形態では、ビットバッファは、データがサポートされる永久記憶に転送される又はネットワークを介して送信される前に、データを一時的に格納する。図6に示すように、バッファは、(少なくとも)以下の方法:入力データxをバッファに挿入するput()関数、でアクセス可能である。一実施形態では、xはnb個のビットを用いて格納され、send()関数は、バッファをフラッシュし、データを出力ストリームoutに転送する。
抽象レイヤとして機能する1つ以上のインタフェースが、型付けされた演算に提供されてよい。一実施形態では、低レベルメソッドput()が、それぞれ整数、符号無し整数、及び文字列を(例えばバッファに)書き込むために利用できるwriteInt()、writeUnit()、及びwriteStr()のような異なる高レベルメソッドにより呼び出され得る。
一実施形態では、第3抽象レイヤが、入力(例えば、図6に示す入力ファイル602)から1行ずつデータを読み出し型付けされたデータを書き込む基礎にあるメソッドを呼び出すscan()のような関数により提供される。一実施形態では、図6に示すscan()関数は、呼び出されると、ファイル内の各コマンドが基礎にあるメソッドのうちの1つにマッピングできることをチェックするルーチンに対応する。一実施形態では、例えば認識されないコマンド、不正な署名フォーマット、不正な(例えば推奨されない)関数バージョンを検出した結果として生じる、マッピング内のエラーは、符号化処理全体の失敗を引き起こす。
一実施形態では、最高の抽象レイヤで、serialise()関数は、回路情報を含む入力ファイルから読み出し、圧縮情報を出力ストリームに送信する。一実施形態では、出力ストリームは、ファイル又はネットワークリソースである。
一実施形態では、回路を含むファイルの行は、以下のフォーマットを有する。ここで、Pは演算子OPのパラメータの数である。一実施形態では、演算子は特定数のパラメータを必要とする。一実施形態では、パラメータは、in-parameter(入力パラメータ)、out-parameter(出力パラメータ)、inout-parameter(入力値を演算に提供し、演算の結果を格納するときに使用されるパラメータ)、等として分類できる。一実施形態では、別個のデータ構造が、演算子及びパラメータの圧縮のために使用される。一実施形態では、異なる圧縮技術が異なるデータ構造のために使用される。データ構造は、一実施形態では、キュー、スタック、ベクトル、等のような任意の適切なデータを使用して実装されてよい。一実施形態では、演算子キューの中の演算子は、固定数のパラメータ及び/又は固定サイズのパラメータを有する必要がある(例えば、可変長のデータblobはサポートされない)。例えば、データ構造に格納された「ADD」演算は、正確に2つの入力パラメータと、1つの出力パラメータとを要求してよい。留意すべきことに、キューに格納された演算は、より上位の抽象レベルにおける演算と異なってよい。例えば、及び一般的には、加算演算は、任意の数の入力パラメータに対して実行できる(例えば、a+b+c+...).一実施形態では、データ構造は、異なる関数署名に対応する演算の複数の変形を有する。例えば、データ構造は、2つの入力と該2つの入力の和を表す1つの出力をサポートする「ADD2」演算、3つの入力と該3つの入力の和についての出力パラメータをサポートする「ADD3」演算、等をサポートしてよい。従って、一実施形態では、任意の数の入力の和は、固定数の入力を有する複数の加算演算を用いて一緒に繋げることができる。
一実施形態では、動的(例えば、可変)サイズを有するデータフィールドは、シリアル化パケットに埋め込むことができる。説明のための例として、同じサイズ(16ビット)を有する圧縮データの4個のブロック[data,data,data,data]がシリアル化される場合を考える。一実施形態では、データブロックは、以下の符号化方式を用いて圧縮できる:固定サイズを有する第1フィールドは、ペイロード内のデータパケットの数のために予約されたフィールドのサイズ(例えば、単位:ビット)を含み、固定サイズ(例えば、第1フィールドと同じ又は異なるサイズ)を有する第2フィールドは、ペイロード内のデータパケットのために予約されたフィールドのサイズをビット単位で含み、第3フィールドはペイロード内のデータパケットの数を含み、残りのフィールドはデータパケットを含む。これは、動的なデータフィールドをどのように埋め込むかの単なる説明のための一例である。一実施形態では、第1データフィールドは、第1データフィールドに従う第1データ構造のサイズを符号化する。一方で、データ構造は、第2データフィールドに従う第2データ構造のサイズを符号化する第2データフィールドを含むことができる、等であり、ネストされた及び/又は順次パターンである。
一実施形態では、シリアル化回路のヘッダは、以下に詳細に記載されるような1つ以上の符号化フィールドを含む。一実施形態では、バージョンフィールドは、ヘッダの残りの部分をどのように解釈し及び/又は構築するか、及び固定サイズであるか(例えば、1バイト)に関する情報を提供する。一実施形態では、ヘッダは、演算のためのシンボルの数を示すパラメータMを含む。一実施形態では、このパラメータは、シリアル化回路によりサポートされる演算の最大数に基づき決定される固定数のビットを用いて符号化される。一実施形態では、入力ワイヤの数(IN)、出力ワイヤの数(OUT)、ワイヤ識別子の符号化サイズ(n)、及びパラメータの符号化サイズ(nparams)は、例えばハードコードされたビット数を用いて符号化される。一実施形態では、ワイヤの合計数Nは、符号化サイズnを有する。留意すべきことに、ヘッダは、必ずしも、シリアル化データファイルの初めに又は先頭に位置する必要はない。一実施形態では、ヘッダは、ヘッダ情報の関連するデータの前の、シリアル化回路内の特定点に置かれるだけでよい。例えば、ヘッダがワイヤの合計数Nについてのパラメータを含む場合、一実施形態では、ヘッダ情報Nは、シリアル化回路内の任意の適切な点で符号化され、その結果、ワイヤ識別子を符号化するデータの前に読み出される。
一実施形態では、ヘッダは、埋め込み辞書を含む。一実施形態では、ハフマン符号化のシンボルの最大符号化サイズが先ず加算され、次に、各ペア(シンボルサイズ、シンボル)が、ペアの第1要素の最大符号化サイズを用いて加算される。一実施形態では、算術符号化が利用されない場合、nparamsは、ヘッダの任意的パラメータである(例えば、省略できる)。一実施形態では、個々のシンボルの確率は、(符号化サイズnprobを用いて)直接符号化できる。或いは、確率方式を提供でき、乗算係数がセット全体を表すために使用できる。例えば、4個のシンボルが以下の確率で使用される場合を考える:p=0.1、p=0.4、p=0.1、p=0.4。次に、乗算係数が、セット全体[1,4,1,4]を表すために使用できる。一実施形態では、これらの係数は、(例えば、符号化サイズncoeffを用いて)個々に符号化され、又は(符号化サイズnpidを用いて)ユニークな識別子により方式テンプレートとして表される。一実施形態では、ヘッダは、nprob及び/又はシンボルを識別子にマッピングするテーブルも符号化する。
一実施形態では、算術符号化は、値範囲を用いて、ヘッダ内に符号化された確率に従い、演算のシーケンスを表す。一実施形態では、符号化範囲の精度は、本開示の他の場所に記載されたように、例えば、図4に可憐する記載に関連して、計算できる。一実施形態では、このようにハフマン符号化を用いて、演算に対応する各圧縮シンボルは、ペイロードに順次追加される。
一実施形態では、ハフマン符号化が利用される場合のように、ワイヤ識別子は、それぞれペイロードに順次追加される。一実施形態では、算術符号化を用いてワイヤ識別子を符号化するために、異なる方針が利用できる。例えば、連続的符号化(例えば、ハフマン符号化による)、算術符号化(例えば、演算子による)、識別子の集約(例えば、図8に関連して以下に詳述される)、のうちの1つ以上である。
図7は、一実施形態による、バッファを用いて演算回路のシリアル化を制御する処理700の説明図を示す。処理700(又は本願明細書に記載の任意の他の処理、又はその変形及び/又は組み合わせ)の一部又は全部は、図5及び6に関連して記載した技術に従い実行されてよい。
一実施形態では、シリアル化処理700は、異なる演算と演算の種類との間の抽象レイヤを提供するインタフェースのセットを用いて管理される。一実施形態では、第1抽象レイヤで、処理700を実行するコンピュータシステムは、スマートコントラクトを表す演算回路をシリアル化するためのコマンドを受信する702。一実施形態では、コマンドは、シリアル化すべき演算回路を含むデータファイルへの参照を含むAPI(application programming interface)コマンドである。一実施形態では、データファイルは、未圧縮データファイルである(例えば、算術符号化技術を用いて圧縮されない)。一実施形態では、コマンドは、また、演算回路のシリアル化結果を格納する出力ストリームを識別する。
一実施形態では、スマートコントラクトは、正確な意味論を有するドメイン固有言語(DSL)コードで記述される。スマートコントラクトは、一実施形態では、条件のセット及び1つ以上の結果を含み、該1つ以上の結果の充足が、1つ以上の入力に基づく条件のセットの評価に少なくとも部分的に依存する。一実施形態では、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を含む。一実施形態では、GPLプリコンパイラは、外部ライブラリを用いてGPLコードを処理して、スタンドアロン型GPL前処理スマートコントラクトを生成する。一実施形態では、演算回路は、要素の演算ゲートに接続されるワイヤでシンボルを表現することにより構築される。
一実施形態では、システムは、演算回路を含む入力ファイルの第1行をスキャンする704。一実施形態では、読み出された入力ファイルの各行は、1つ以上の実行可能命令(例えば、アセンブリ命令)に対応し得るコマンドに対応する。一実施形態では、ファイルのスキャンは、ファイルの最初又は次の行からのコマンドの取得、及びコマンドの基礎にあるメソッドへのマッピングを含む。一実施形態では、システムは、コマンドに関連する型付けされた演算を決定することによりマッピングを決定する706。一実施形態では、サポートされる異なるデータ型は、整数、符号無し整数、文字列(例えば、ヌル終止符特別文字で終わる文字列)を含む。
一実施形態では、エンコーダの特定の設定に依存して、異なる種類の変数が、異なる数のビットを用いて符号化される708。符号化技術は、図5と関連して詳述される技術に従ってよい。例えば、ヘッダデータ、演算子データ、及びワイヤ識別子データの符号化は、それぞれ、データ符号化のための算術符号化技術のような異なる技術を利用できる。異なる符号化技術は、異なる種類の演算のために使用できる。一実施形態では、データが符号化されると、データはバッファに挿入される。一実施形態では、データをバッファに挿入するコマンド710は、データの特定数のビットを出力ストリームに書き込むコマンドである。システムは、次に、(例えば、ビットまたは文字の特定のend-of-fileシーケンスに達したか否かを検出することにより)ファイルの終わりに達したか否かを決定してよい712。一実施形態では、処理されるべきファイルの更なるコマンドがある場合、システムは、ファイルを通じて順にスキャンして、ファイルの第2、第3、第4、等の行を取得し、それらを上述のステップ704~710に従い処理する。これらのステップは、ファイルの終わりが検出されるまで繰り返されてよい。ファイルの終わりで、システムは、バッファをフラッシュして、全部のデータを出力ストリーム又はファイルへ転送し、それによりシリアル化回路を生成する714。
図8は、演算回路に基づき辞書の特性を利用し及びコンピュータシステム又はBitcoinネットワークのノードのようなコンピュータネットワークに格納される演算回路のサイズを削減するために本願明細書に記載の他の圧縮技術と関連して利用できるシンボルシーケンスのマルチシンボル表現を視覚化する図800を示す。
一実施形態では、(例えば、利用可能な計算リソースにおける制約により)辞書のサイズは制限され、シンボルの発生は相関される(例えば、独立の確率特性がない)。従って、一実施形態では、圧縮のための算術範囲は、図8に示すような個々のプリミティブの機能を集約するシンボルを含む。
説明のための例として、以下の回路又は回路の部分(例えば、サブ回路)を考える。ここで、各演算の最初の2つのパラメータは入力識別子であり、最後のパラメータは出力識別子である。
ADD 4 5 6
ADD 1 6 7
ADD 1 7 8
上述の加算演算は、一実施形態では、以下の形式に圧縮できる:
ADD3 4 5 1 1 8
一実施形態では、種々の因子が、データが圧縮可能な程度に影響を与える。例えば、辞書のサイズが制限されるか否か及び/又はどの程度制限されるか(確率範囲のフラグメント化は小数の2進表現の最適化を容易にしない)、プリミティブが個々に符号化されるか否か(確率範囲は集約されたシンボルに割り当てられる)、最小数の集約シンボルが提供される(あまり集約されないシンボルは、より効率的な確率範囲割り当てに相関される)。圧縮パラメータの推定は、一実施形態では、全ての算術演算が同じ数の入力(例えば、α)を有するという前提に基づき決定できる。一実施形態では、N個のプリミティブ演算子に基づき構築された集約シンボルOPは、対応するプリミティブ演算子より遅い平均レートN回で、圧縮出力ストリームのために新しいビットを生成する。さらに、N-1個の入力識別子が節約できる。演算及び識別子について初期の回路サイズがsizeOPS+sizeIDSである場合、最適圧縮は以下により与えられる:
Figure 0007364583000012
集約シンボルの確率範囲は、固定、又は前のシンボルに依存して自動的に調整できる。固定確率の場合、シンボルシーケンス{s,s,...,sβ}について以下の集約確率P(s,s,...,sβ)を定義する:
Figure 0007364583000013
留意すべきことに、β!(つまり、βの階乗)個の、β個の連続するシンボルの異なる順列が利用可能である。シンボルシーケンスは、1つ以上のシンボルの繰り返しを含み得ることに留意する。乗算の可換特性により、各順列は、同じ集約シンボル確率により特徴付けられる。
一実施形態では、シンボル深さβは、入力ストリームのコンテンツに従い符号化段階の間に動的に変更される。一実施形態では、放出されるシンボルの数Nは、新しい範囲割り当てが実行されるとき、確立するために使用される。一実施形態では、N個の放出されたシンボルの2つの連続するウインドウに渡るマルチシンボル範囲は、異なり得る。更に、異なる集約シンボル深さβi(1≦i≦n)は、図9に示すように、現在ウインドウの中で定義されるn個のマルチシンボル範囲の各々について定義できる。一実施形態では、Nは、定数であり、及び/又はシリアル化データのヘッダの中で定義される。
図900は、ストリーム[a,a,a]がマルチシンボルsに変換され、ストリーム[b,b]がsに変換され、シンボルcがsに変換される、マルチシンボル符号化の説明のための例を示す。本例では、集約シンボル深さはそれぞれβ=3、β=2、β=1であり、n=3である。
所与の現在符号化ウインドウのβベクトルの設定は、一実施形態では、前の符号化ウインドウの設定に基づく。異なる重みwが、前のウインドウに割り当てられる:
Figure 0007364583000014
従って、シンボルsについてステップjにおける集約シンボル深さ、つまりβ(s)は、一実施形態では、前のステップβj-1(s)と前のj-2個のステップの平均シンボル深さとの間の加重和として表される最も近い整数に近似できる。この式を用いて、コーダ及びデコーダの両方は、それらのシンボル確率範囲を同期できる。複数の重みも、以下のように定義できる:
Figure 0007364583000015
全部の重みが実数範囲[0,1]にあり、それらの和は1に等しくなければならない。
一実施形態では、集約シンボル深さをどのように計算するか、及び所与の集約シンボルが何を表すかを確立する。図8の前の例では、s、シンボルの繰り返し[a]、s、シンボルの繰り返し[b]、等を定義した。辞書が十分に小さい場合(例えば、10個のシンボルより少ない)、組み合わせの完全な集合は予め構成できる。例えば、集約シンボル組み合わせのセットは、以下の方法で識別子にマッピングしてよい:
Figure 0007364583000016
図10は、識別子を集約するために演算回路1002が算術符号化技術を用いて圧縮され、結果として(例えば、識別子が集約されないシステムと比べて)更に圧縮可能なシリアル化回路1004を生成する図1000を示す。一実施形態では、演算子及び識別子は、別個の符号化され、例えば異なる技術を用いて符号化され、異なるデータ構造を用いて格納される(例えば、演算子のための第1キュー、及び識別子のための第2キュー)。図10は、少なくとも一実施形態による、識別子の例示的なシリアル化を示す。一実施形態では、算術符号化技術を利用する圧縮処理は、演算回路1002に適用されて、演算回路1002よりサイズの小さい(例えば、より少ないビット数のデータを用いて格納される)シリアル化回路1004を生成する。一実施形態では、シリアル化回路1004は、平均的に(例えば、演算回路の全個体群(population)又は期待される回路動作/値に基づき決定される)、演算回路1002よりサイズが小さい。一実施形態では、算術符号化は、演算回路1002に適用された場合に、無損失伸長ルーチンを適用することにより演算回路1002を完全に(例えば、ビット対ビットの精度で)再生成できる結果(つまりシリアル化回路1004)を生成する一種の無損失圧縮である。
一実施形態では、エントロピー方式が回路又は回路の部分を符号化するために利用されるか否か(例えば、識別子を符号化すべきか否か、演算子を符号化すべきか否か)は、データがどのように生成されるか、シンボルのサイズ、又はそれらの組み合わせに基づき決定される。例えば、幾つかの実施形態では、識別子は、それらの生成のランダムな特性及び/又はシンボルのサイズのために、エントロピー方式を用いて符号化されない。一般的に、より大きな回路はより多くの識別子を有し、シンボルのサイズを増大する。
一実施形態では、識別子の集約は、圧縮方式の部分として、識別子の局所性を利用できる。これは、データの局所性に基づく使用に適してよい。つまり、回路の同じ部分で使用される識別子は、同様の値を有する傾向がある。留意すべきことに、これは全ての回路に該当せず、識別子の集約は、以下に更に詳述される集約技術を実行するか否かの決定(例えば、シリアル化の前の回路の分析)に基づき実行されてよい。
集約技術の部分として、絶対値ではなく、2つの識別子の間の差が符号化される。一実施形態では、この方式は、入力識別子に適用され、出力識別子に適用されない。一実施形態では、出力識別子は、増分(incremental)であり、符号化処理中に必要なく、演算がシリアル化される順序に基づき除去され再構成できる。
説明のための例として、以下の回路又は回路の部分を考える:
ADD 4 5 6
ADD 1 6 7
ADD 1 7 8
識別子は、以下のように符号化できる:
ADD 4 1 6
ADD -4 5 7
ADD -5 6 8
最初の入力(4)は、通常通り符号化される。2番目の入力は、2番目の入力と前の入力との間の差として符号化される。言い換えると、5-4=1である。次の識別子は、出力であり、集約目的で無視される。第2の加算演算を続けると、3番目の入力は3番目の入力と2番目の入力との間の差として符号化され:1-5=-4、以下同様である。一実施形態では、この方式の利点のうちの1つは、多数の識別子を有する大規模回路の状況で、直ちに理解される(例えば、多数の識別子は、絶対的な識別子の値を符号化するために追加データビットを必要とする)。平均して、識別子を符号化するためにn個のビットが必要な場合、差を符号化するためにはn/2個より少ないビットしか必要ない。一実施形態では、入力ワイヤは、差の値を削減及び/又は最小化するために、再構成できる(例えば、無損失にかつ完全に再生成可能な方法でそれらを符号化するためには、少ないビットしか必要ない)。
ADD 4 1 6
ADD -4 0 7
ADD 5 1 8
符号を表現するために追加ビットを考える。第1のソリューションは、5個の符号化入力識別子[1,-4,5,-5,6]を符号化するために14個のビットを必要として。一方、第2のソリューションは、符号化識別子[1,-4,0,5,1]を符号化するために10個のビットしか必要としない。各行の入力は、必要な合計ビットを最小化するために、回路生成の間に再構成できる。
明細書及び図面は、したがって、限定的意味ではなく説明的であると考えられるべきである。しかしながら、これらへの種々の変更及び変化が、特許請求の範囲に記載された発明の範囲から逸脱することなく行われてよいことが明らかである。同様に、他の変形は、本開示の範囲内にある。したがって、開示の技術は種々の変更及び代替構成を受けるが、その特定の図示の実施形態が図示され、詳細に上述された。しかしながら、本発明を開示の1又は複数の特定の形式に限定する意図はなく、反対に、添付の特許請求の範囲に定められるように、本発明の範囲に包含される全ての変更、代替構成、均等物をカバーすることを意図する。
開示の実施形態を記載する文脈における用語「a」及び「an」、「the」及び同様の参照は(特に以下の特許請求の範囲の文脈では)、文脈上特に示され又は明確に否定されない限り、単数及び複数の両方をカバーすることを意図する。用語「有する」、「含む」(comprising、having、including、containing)等は、特に断りのない限り、制限のない用語(つまり、「含むがそれに限定されない」を意味する)と考えられるべきである。用語「接続される(connected)」は、未修飾であり物理的接続を参照するとき、仲介物がない場合でも、部分的または全体的に含まれる、付加される、又は一緒に結合されると考えられるべきである。本開示における値の範囲の記載は、特に断りのない限り、単に、その範囲に含まれる各々の個別の値を個々に参照することの簡略表記法として機能し、各別個の値は個々に記載されたように本明細書に組み込まれると考えられるべきである。用語「セット又は集合」(例えば、「アイテムのセット」)又は「サブセット又は部分集合」の使用は、特に断りのない限り又は文脈上否定されない限り、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}のいずれかを表す。したがって、このような結合的言語は、通常、特定の実施形態が少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCがそれぞれ存在することを必要とすることを意味することを意図しない。さらに、特に断りの無い限り、又は文脈上特に明らかでない限り、語句「~に基づく」は、「~に少なくとも部分的に基づく」を意味し、「~のみに基づく」を意味しない。
記載のプロセスの動作は、特に断りのない限り又は文脈上明確に否定されない限り、任意の適切な順序で実行できる。記載のプロセス(又は変形及び/又はそれらの結合)は、実行可能命令により構成された1つ以上のコンピュータシステムの制御下で実行でき、ハードウェア又はその組み合わせにより1つ以上のプロセッサ上で連携して実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装できる。幾つかの実施形態では、コードは、コンピュータ可読記憶媒体に、例えば1つ以上のプロセッサにより実行可能な複数の命令を有するコンピュータプログラムの形式で格納できる。幾つかの実施形態では、コンピュータ可読記憶媒体は、非一時的である。
任意の及び全ての例の使用、又は提供された例示的な言語(例えば「のような(such as)」)は、単に、本発明の実施形態をより良好に解明することを意図しており、特に断りのない限り本発明の範囲に限定を課すものではない。明細書中のいかなる言語も、任意の請求されない要素を本発明の実施に必須であることを示すと考えられるべきではない。
本発明を実施するために発明者に知られたベストモードを含む本開示の実施形態が記載された。種々のこれらの実施形態は、前述の説明を読むことにより、当業者に明らかになる。発明者は、当業者がこのような変形を適切に利用することを期待し、発明者は、本開示の実施形態が特に記載されたものと異なる方法で実施されることを意図する。したがって、本開示の範囲は、適用される法により許容されるように、添付の特許請求の範囲に記載された主題の全ての変更及び均等物を含む。さらに、それらの全ての可能な変形における上述の要素の任意の組み合わせは、特に断りのない限り又は文脈上特に明確に否定されない限り、本開示の範囲により包含される。
上述の実施形態は、本発明を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本発明の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本発明は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化できる。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。

Claims (13)

  1. コンピュータにより実施される方法であって、
    スマートコントラクトを表す演算回路に基づき、シンボルセットを取得するステップと、
    前記演算回路を格納するために、少なくとも以下:
    前記シンボルセットのサブセットを符号化値範囲にマッピングするステップと、
    前記符号化値範囲の中の符号化値を選択するステップと、
    圧縮演算回路の中で、前記符号化値を有する前記シンボルセットの第1サブセットを表すステップと、
    により、データ量を削減するステップと、
    前記圧縮演算回路を、ブロックチェーンネットワークのノードに格納させるステップと、
    を含み、
    前記演算回路は、演算子及びワイヤ識別子を含むデータフィールドのセットを含み、
    前記シンボルセットは前記演算子であり、前記ワイヤ識別子は算術符号化方式に従い別個に符号化される、方法。
  2. 前記圧縮演算回路は、前記シンボルセットを異なる範囲の符号化値にマッピングするために使用可能なヘッダ符号化情報を含む、請求項1に記載の方法。
  3. 前記符号化値は二進小数である、請求項1~2のいずれか一項に記載の方法。
  4. 前記符号化値は、前記符号化値が最小限の数のビットを用いて表すことができることに基づき、選択される、請求項1~3のいずれか一項に記載の方法。
  5. 前記符号化値を選択するステップは、
    前記シンボルセットの異なるサブセットを前記符号化値範囲のサブ範囲にマッピングするステップと、
    前記符号化値範囲の前記サブ範囲の中から前記符号化値を選択するステップと、
    を含み、
    シンボルの前記第1サブセットおよび2サブセットは、前記圧縮演算回路の中で前記符号化値により表される、請求項1~4のいずれか一項に記載の方法。
  6. 前記シンボルセットの中のシンボルを前記シンボルと前記シンボルセットの別のシンボルとの間の差として符号化するステップ、を更に含む請求項1~のいずれか一項に記載の方法。
  7. 前記演算回路を符号化するファイルをパースして、演算子セット及び前記演算子セットの少なくとも一部のパラメータセットを識別することにより、前記シンボルセットを取得するステップ、を更に含む請求項1~のいずれか一項に記載の方法。
  8. 前記符号化値範囲は、前記サブセットがパターン内に生じる確率に対応する、請求項1~のいずれか一項に記載の方法。
  9. 前記シンボルセットの前記サブセットは、1つのシンボルである、請求項1~のいずれか一項に記載の方法。
  10. 前記圧縮演算回路は、前記演算回路の代わりに前記ブロックチェーンネットワークにブロードキャストされる、請求項1~のいずれか一項に記載の方法。
  11. 前記圧縮演算回路を受信した前記ブロックチェーンネットワークのノードは、前記圧縮演算回路から前記演算回路を決定することができる、請求項1~10のいずれか一項に記載の方法。
  12. システムであって、
    プロセッサと、
    前記プロセッサによる実行の結果として、前記システムに請求項1~11のいずれか一項に記載のコンピュータにより実施される方法を実行させる実行可能命令を含むメモリと、
    を含むシステム。
  13. 実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、前記コンピュータシステムに、請求項1~11のいずれか一項に記載のコンピュータにより実施される方法を少なくとも実行させる、非一時的コンピュータ可読記憶媒体。
JP2020550875A 2018-03-27 2019-03-15 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム Active JP7364583B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2023173527A JP7719839B2 (ja) 2018-03-27 2023-10-05 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム
JP2025124470A JP2025173508A (ja) 2018-03-27 2025-07-25 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1804948.6 2018-03-27
GBGB1804948.6A GB201804948D0 (en) 2018-03-27 2018-03-27 Computer implemented system and method
GB1813863.6 2018-08-24
GBGB1813863.6A GB201813863D0 (en) 2018-08-24 2018-08-24 Computer-Implemented system and method
PCT/IB2019/052112 WO2019186316A1 (en) 2018-03-27 2019-03-15 Computer-implemented methods and systems relating to arithmetic coding for serialised arithmetic circuits

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023173527A Division JP7719839B2 (ja) 2018-03-27 2023-10-05 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム

Publications (2)

Publication Number Publication Date
JP2021518715A JP2021518715A (ja) 2021-08-02
JP7364583B2 true JP7364583B2 (ja) 2023-10-18

Family

ID=65951841

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2020550875A Active JP7364583B2 (ja) 2018-03-27 2019-03-15 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム
JP2023173527A Active JP7719839B2 (ja) 2018-03-27 2023-10-05 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム
JP2025124470A Pending JP2025173508A (ja) 2018-03-27 2025-07-25 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2023173527A Active JP7719839B2 (ja) 2018-03-27 2023-10-05 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム
JP2025124470A Pending JP2025173508A (ja) 2018-03-27 2025-07-25 シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム

Country Status (5)

Country Link
US (2) US11474784B2 (ja)
EP (2) EP3776867B1 (ja)
JP (3) JP7364583B2 (ja)
CN (2) CN111903062B (ja)
WO (1) WO2019186316A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220109455A1 (en) * 2018-06-29 2022-04-07 Zenotta Holding Ag Apparatus and method for providing authentication, non-repudiation, governed access and twin resolution for data utilizing a data control signature
US11265175B2 (en) * 2018-06-29 2022-03-01 Zenotta Holding Ag Apparatus and method for providing authentication, non-repudiation, governed access and twin resolution for data utilizing a data control signature
US12067377B2 (en) 2021-09-06 2024-08-20 MphasiS Limited System and a method for automatic generation of smart contracts across blockchain platforms
CN114567673B (zh) * 2022-01-25 2024-04-05 浙江数秦科技有限公司 一种区块链节点快速广播区块的方法
US20230274262A1 (en) * 2022-02-28 2023-08-31 International Institute Of Information Technology, Hyderabad System and method for better utilization of power consumption in blockchain system by validating digital currency transactions with minimal computing resources
CN115361027B (zh) * 2022-10-18 2023-03-24 江苏量超科技有限公司 一种污水处理效果识别方法
WO2024116092A1 (en) * 2022-11-29 2024-06-06 Trock Stanislav Full-fledged smart contracts for utxo based blockchains
CN116861489B (zh) * 2023-02-23 2024-03-08 重庆市规划和自然资源信息中心 针对地图二维数据的串行化安全管理方法
GB2628626A (en) * 2023-03-31 2024-10-02 Nchain Licensing Ag Outsourcing computations using blockchain

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012114711A1 (ja) 2011-02-23 2012-08-30 パナソニック株式会社 画像符号化方法および画像復号方法
WO2018020389A2 (en) 2016-07-29 2018-02-01 Chain Holdings Limited Blockchain implemented method and system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5933960A (ja) * 1982-08-19 1984-02-24 Fuji Xerox Co Ltd コ−ド情報伝送方式
US5774081A (en) * 1995-12-11 1998-06-30 International Business Machines Corporation Approximated multi-symbol arithmetic coding method and apparatus
US6377706B1 (en) 1998-05-12 2002-04-23 Xerox Corporation Compression framework incorporating decoding commands
US7026961B2 (en) * 2004-05-03 2006-04-11 Lsi Logic Corporation Real time binary arithmetic encoding
DE102006032748A1 (de) * 2006-07-14 2008-01-17 ITF-EDV Fröschl GmbH Verfahren zur Reduzierung der Datenmenge von durch zumindest ein Zählermodul bereitgestellten Messdaten und zugehörige Kompressionseinrichtung
US8700579B2 (en) * 2006-09-18 2014-04-15 Infobright Inc. Method and system for data compression in a relational database
JP5039948B2 (ja) 2007-10-30 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムを最適化するコンパイラ
US7937678B2 (en) 2008-06-11 2011-05-03 Infineon Technologies Ag System and method for integrated circuit planar netlist interpretation
TWI378654B (en) 2009-02-04 2012-12-01 Novatek Microelectronics Corp Adaptive canonical huffman decoder and method thereof and video decoder
EP2270647A1 (en) 2009-06-29 2011-01-05 Panasonic Corporation Multi-bit carry chain
CN102939719B (zh) * 2010-05-21 2016-08-03 黑莓有限公司 用于在二进制熵编码和解码中减少源的方法和设备
AU2015249167B2 (en) * 2011-06-16 2017-05-04 Dolby Video Compression, Llc Context initialization in entropy coding
US9509335B1 (en) * 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
JP2017034531A (ja) 2015-08-04 2017-02-09 富士通株式会社 動画像符号化装置及び動画像符号化方法
FR3043811B1 (fr) 2015-11-16 2017-11-10 Morpho Procede d'identification d'une entite
US20170212968A1 (en) 2016-01-22 2017-07-27 Easy-Logic Technology Limited Circuit Verification
US10002220B2 (en) 2016-04-27 2018-06-19 International Business Machines Corporation On the fly netlist compression in power analysis
CN106326641A (zh) * 2016-08-13 2017-01-11 深圳市樊溪电子有限公司 基于压缩感知和稀疏重构算法的区块链系统数据处理方法
US9941900B1 (en) * 2017-10-03 2018-04-10 Dropbox, Inc. Techniques for general-purpose lossless data compression using a recurrent neural network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012114711A1 (ja) 2011-02-23 2012-08-30 パナソニック株式会社 画像符号化方法および画像復号方法
WO2018020389A2 (en) 2016-07-29 2018-02-01 Chain Holdings Limited Blockchain implemented method and system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Glen G. Langdon, Jr.,An Introduction to Arithmetic Coding,IBM Journal of Research and Development,1984年03月,Vol.28, No.2,pp.135-149,[検索日:2023.02.13],インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5390377>
Jeehong Yang, Serap A. Savari, Oskar Mencer,An Approach to Graph and Netlist Compression[online],Data Compression Conference (dcc 2008),2008年04月03日,pp.33-42,[検索日:2023.02.09],インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4483281>
Matthew D, Sleiman et al.,Bitcoin Messeage: Data Insertion on a Proof-of-Work Cryptocurrency System[online],2015 International Conference on Cyberworlds (CW),2016年02月04日,pp.332-336,[検索日:2023.02.13],インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7398436>
Melanie Swan,Blockchain Thinking : The Brain as a Decentralized Autonomous Corporation,IEEE Technology and Society Magazine,2015年12月17日,Vol.34, No.4,pp.41-52,[検索日:2023.02.13],インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7360255>

Also Published As

Publication number Publication date
EP3776867A1 (en) 2021-02-17
CN111903062B (zh) 2025-03-18
CN111903062A (zh) 2020-11-06
EP4415309A3 (en) 2024-10-30
US20230122761A1 (en) 2023-04-20
EP4415309A2 (en) 2024-08-14
JP2025173508A (ja) 2025-11-27
CN120260659A (zh) 2025-07-04
JP2021518715A (ja) 2021-08-02
EP3776867B1 (en) 2024-07-10
US11474784B2 (en) 2022-10-18
US20210026599A1 (en) 2021-01-28
JP7719839B2 (ja) 2025-08-06
JP2023175931A (ja) 2023-12-12
WO2019186316A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
JP7719839B2 (ja) シリアル化演算回路の算術符号化に関するコンピュータにより実装される方法及びシステム
JP7711237B2 (ja) 演算回路のシリアル化のためのコンピュータにより実装されるシステム及び方法
JP7791258B2 (ja) 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム
CN113205336B (zh) 多重签名交易方法、计算机设备和存储介质
KR102960805B1 (ko) 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화
Ahmed et al. Inform ation an d Com m unification Theory
Cao et al. Adaptive Security of Concurrent Non-Malleable Zero-Knowledge

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230512

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: 20230808

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230907

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231005

R150 Certificate of patent or registration of utility model

Ref document number: 7364583

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150