KR20220041334A - Blockchain system with zero-knowledge proof virtual machine applied for general operation - Google Patents

Blockchain system with zero-knowledge proof virtual machine applied for general operation Download PDF

Info

Publication number
KR20220041334A
KR20220041334A KR1020200124393A KR20200124393A KR20220041334A KR 20220041334 A KR20220041334 A KR 20220041334A KR 1020200124393 A KR1020200124393 A KR 1020200124393A KR 20200124393 A KR20200124393 A KR 20200124393A KR 20220041334 A KR20220041334 A KR 20220041334A
Authority
KR
South Korea
Prior art keywords
verification
circuit
general operation
proof
key
Prior art date
Application number
KR1020200124393A
Other languages
Korean (ko)
Inventor
안병태
정순형
Original Assignee
주식회사 온더
안병태
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
Application filed by 주식회사 온더, 안병태 filed Critical 주식회사 온더
Priority to KR1020200124393A priority Critical patent/KR20220041334A/en
Publication of KR20220041334A publication Critical patent/KR20220041334A/en

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • 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
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

According to an embodiment of the present invention, a blockchain system to which a zero-knowledge proof based virtual machine is applied capable of general operation verification comprises: a circuit generator for general operation verification configured to generate a circuit for general operation verification having the reference number of commands, the reference number of machine steps, and a size of an existing system and configured to generate a proof key and a verification key by using the circuit for general operation verification and a zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK) algorithm; a prover terminal configured to generate an evidence by using the proof key including the circuit for general operation verification, a coefficient of a polynomial function obtained through the zk-SNARK algorithm, and information necessary for verification and proof in the circuit for general operation verification; and a verifier terminal configured to verify whether the evidence is valid by using the verification key, the information necessary for verification and proof in the circuit for general operation verification, and the evidence.

Description

일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템{BLOCKCHAIN SYSTEM WITH ZERO-KNOWLEDGE PROOF VIRTUAL MACHINE APPLIED FOR GENERAL OPERATION}A blockchain system with a zero-knowledge proof-based virtual machine that can verify general operations {BLOCKCHAIN SYSTEM WITH ZERO-KNOWLEDGE PROOF VIRTUAL MACHINE APPLIED FOR GENERAL OPERATION}

본 발명은 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템에 관한 것으로, 보다 구체적으로 블록체인 참여자가 블록의 내용을 알지 못하더라도 전체 노드 중 증명 및 보고의 역할을 수행하는 노드가 블록의 내용이 위/변조 되지 않았음을 빠르게 검증할 수 있도록 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템에 관한 것이다.The present invention relates to a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification is applied. It relates to a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification that can quickly verify that the contents of a block has not been forged/altered is applied.

블록체인은 P2P(Peer to Peer) 네트워크에서 신뢰할 수 있는 제 3자 (Trusted Third Parity)의 개입 없이, 거래 내역들의 무결성을 확보하고 참여자들이 내역들을 공유하는 분산형 디지털 장부를 의미한다. Blockchain refers to a distributed digital ledger that secures the integrity of transaction details and allows participants to share details without the intervention of a trusted third party in a peer-to-peer (P2P) network.

블록체인을 응용한 대표적인 사례는 비트코인 및 이더리움 등과 같은 암호화폐이다. 이더리움은 이더리움 가상머신(이하 EVM)을 도입한 후, EVM을 통해 사용자들은 사전 정의된 일련의 작업을 수행하기보다 사용자가 원하는 방식에 맞게 직접 프로그래밍을 할 수 있다. Representative examples of blockchain applications are cryptocurrencies such as Bitcoin and Ethereum. After Ethereum introduced the Ethereum Virtual Machine (hereinafter referred to as EVM), EVM allows users to program directly according to the way they want, rather than performing a predefined set of tasks.

하지만 EVM은 JVM(Java Virtual Machine)과 같은 기존 가상머신에 비해 효율이 매우 떨어지고, 또한 복잡한 어플리케이션 환경을 지원하기 어렵다는 문제점이 있다. However, EVM has problems in that efficiency is very low compared to existing virtual machines such as JVM (Java Virtual Machine), and it is difficult to support complex application environments.

지난 10년간 수많은 블록체인 구현체들이 등장했지만, 트랜잭션을 누적시켜 저장한다는 측면에서 별다른 혁신이 일어나지 않았고, 이럴 경우 모든 트랜잭션 내용을 검증해야하기 때문에 확장성에 한계가 존재한다. Numerous blockchain implementations have appeared in the past 10 years, but there has been no innovation in terms of accumulating and storing transactions.

즉, 트랜잭션 종류마다 별도의 검증 알고리즘을 사용하기 때문에, 트랜잭션의 크기가 커질수록 검증 부담이 커지는 문제가 발생하며, 앞으로 등장할 다양한 블록체인 플랫폼에서 공통적으로 쓰일 수 있는 검증 모듈을 제작해 블록체인의 구조적인 혁신을 선도할 필요가 있다.In other words, since a separate verification algorithm is used for each type of transaction, the verification burden increases as the size of the transaction increases. There is a need to lead structural innovation.

블록체인은 비트코인으로 대표되는 UTXO(Unspent Transaction Output)로 만들어진 단순한 형태의 블록체인과 이더리움과 같이 상태 트리(State Tree)를 다루는 복잡한 형태의 블록체인으로 나뉜다.Blockchain is divided into a simple block chain made of UTXO (Unspent Transaction Output), represented by Bitcoin, and a complex block chain that handles a state tree like Ethereum.

현재는 단순한 형태의 블록체인에서 일부 트랜잭션을 처리하는 경우에만 영지식 증명이 활용된다. 이때, 영지식 증명은 증명자가 자신이 알고 있는 지식과 정보를 공개하지 않으면서, 그 지식을 알고 있다는 사실을 검증자에게 증명하는 시스템을 의미한다.Currently, zero-knowledge proof is used only when processing some transactions in a simple blockchain. In this case, the zero-knowledge proof refers to a system that proves to the verifier that the prover knows the knowledge without disclosing the knowledge and information that the prover knows.

본 발명은 일반연산 검증이 가능한 서킷을 가상머신에 적용한 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템을 제공하는 것을 목적으로 한다. An object of the present invention is to provide a block chain system to which a zero-knowledge proof-based virtual machine capable of general operation verification by applying a circuit capable of general operation verification to a virtual machine is applied.

또한, 본 발명은 사전에 정의된 형태의 트랜잭션뿐만 아니라, 사용자가 원하는 다양한 형태의 트랜잭션에도 영지식 증명을 활용 수 있도록 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템을 제공하는 것을 목적으로 한다. In addition, the present invention provides a block chain system to which a zero-knowledge proof-based virtual machine capable of general operation verification that enables zero-knowledge proof to be utilized not only in a predefined type of transaction but also in various types of transactions desired by a user. aim to

또한, 본 발명은 블록체인 참여자가 블록의 내용을 알지 못하더라도 전체 노드 중 증명 및 보고의 역할을 수행하는 노드가 블록의 내용이 위/변조 되지 않았음을 빠르게 검증할 수 있도록 하는 일반 연산 검증이 가능한 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템을 제공하는 것을 목적으로 한다. In addition, the present invention provides a general operation verification that enables the node that performs the role of proof and report among all nodes to quickly verify that the contents of the block are not forged/falsified even if the blockchain participants do not know the contents of the block. It aims to provide a blockchain system to which a zero-knowledge proof-based virtual machine that can verify possible general operations is applied.

또한, 본 발명은 참여자들에게 블록 싱크 속도를 급격하게 높여주어 새로운 참여자들이 빠르게 네트워크에 참여할 수 있도록 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템을 제공하는 것을 목적으로 한다. In addition, an object of the present invention is to provide a blockchain system to which a zero-knowledge proof-based virtual machine capable of performing general operation verification that rapidly increases the block sync speed to participants so that new participants can quickly participate in the network.

또한, 본 발명은 영지식 증명 기술을 트랜잭션 데이터 저장에 적용할 경우 실제 데이터를 가지치기(pruning)하고 오직 데이터에 대한 증명만 남기는 방식으로 데이터를 압축시켜 데이터 저장 공간을 절약할 수 있도록 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템을 제공하는 것을 목적으로 한다. In addition, when the zero-knowledge proof technique is applied to transactional data storage, the present invention prunes the actual data and compresses the data in a way that only leaves the proof of the data to save the data storage space. It aims to provide a blockchain system to which a verifiable zero-knowledge proof-based virtual machine is applied.

본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects and advantages of the present invention not mentioned may be understood by the following description, and will be more clearly understood by the examples of the present invention. It will also be readily apparent that the objects and advantages of the present invention may be realized by the means and combinations thereof indicated in the appended claims.

이러한 목적을 달성하기 위한 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템은 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 일반연산 검증용 서킷을 생성하고, 상기 일반연산 검증용 서킷 및 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 증명 키 및 검증 키를 생성하는 일반연산 검증용 서킷 생성기, 상기 일반연산 검증용 서킷을 포함하는 증명 키, 상기 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거를 생성하는 증명자 단말 및 상기 검증 키, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보 및 상기 증거를 이용하여 상기 증거가 유효한지 검증을 실행하는 검증자 단말을 포함한다.To achieve this purpose, a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification is applied creates a circuit for general operation verification having the number of reference instructions, the number of reference machine steps, and the size of the reference system, A circuit generator for general operation verification that generates a proof key and verification key using a circuit for general operation verification and zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) algorithm, and a proof including the general operation verification circuit A prover terminal that generates evidence using a key, a polynomial coefficient obtained through the zk-SNARK algorithm, and information necessary for verification and proof among the general operation verification circuit, and the verification key, the general operation verification circuit and a verifier terminal that verifies whether the evidence is valid by using the information and the evidence required for verification and verification.

상기 일반연산 검증용 서킷 생성기는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성하는 서킷 생성 모듈 및 상기 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후, 시큐리티 파라미터 및 상기 서킷 생성 모듈에 의해 생성된 일반연산 검증용 서킷을 이용하여 증명 키 및 검증 키를 생성하는 zk-SNARK 키 생성 모듈을 포함한다.The circuit generator for general operation verification includes a circuit generation module that generates a circuit for general operation verification that operates in any program having the number of reference instructions, the number of reference machine steps, and the size of the reference system, and the key generator information and prover information and a zk-SNARK key generation module that, after receiving the verifier information, generates a proof key and a verification key by using a security parameter and a circuit for general operation verification generated by the circuit generation module.

상기 zk-SNARK 키 모듈은 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성하고, 상기 서킷 생성 모듈은 수학식 1을 이용하여 일반연산 검증용 서킷을 생성한다.The zk-SNARK key module converts the verification rule into a mathematical form indicating a triple vector, and then converts the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier transform to generate a polynomial function, and the circuit generation module performs mathematical Using Equation 1, a circuit for general operation verification is created.

[수학식 1][Equation 1]

C =

Figure pat00001
C =
Figure pat00001

C: 서킷C: circuit

Figure pat00002
: 기준 명령어의 개수,
Figure pat00002
: the number of standard commands,

T: 기준 머신 스텝의 개수,T: number of reference machine steps,

n: 기준 시스템의 크기n: size of reference system

또한, 이러한 목적을 달성하기 위한 일반 연산 검증용 영지식 증명 서킷 생성 방법은 일반연산 검증용 서킷 생성기가 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 일반연산 검증용 서킷을 생성하는 단계, 상기 일반연산 검증용 서킷 생성기가 상기 일반연산 검증용 서킷 및 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 증명 키 및 검증 키를 생성하는 단계, 증명자 단말이 상기 일반연산 검증용 서킷을 포함하는 증명 키, 상기 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거를 생성하는 단계 및 검증자 단말이 상기 검증 키, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보 및 상기 증거를 이용하여 상기 증거가 유효한지 검증을 실행하는 단계를 포함한다. In addition, in the method for generating a zero-knowledge proof circuit for general operation verification to achieve this purpose, the circuit generator for general operation verification generates a circuit for general operation verification having the number of reference instructions, the number of reference machine steps, and the size of the reference system. generating, by the circuit generator for general operation verification, a proof key and verification key using the general operation verification circuit and zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) algorithm, a prover terminal Generating evidence using a proof key including the general operation verification circuit, polynomial function coefficients obtained through the zk-SNARK algorithm, and information necessary for verification and verification among the general operation verification circuits and verification and executing, by the self-terminal, verifying whether the evidence is valid using the verification key, information necessary for verification and verification among the general operation verification circuit, and the evidence.

상기 증명 키 및 검증 키를 생성하는 단계는 상기 일반연산 검증용 서킷 생성기가 상기 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후, 시큐리티 파라미터 및 상기 서킷 생성 모듈에 의해 생성된 일반연산 검증용 서킷을 이용하여 증명 키 및 검증 키를 생성하는 단계를 포함하며, 상기 서킷 생성 모듈은 수학식 1을 이용하여 일반연산 검증용 서킷을 생성한다.In the step of generating the proof key and verification key, after the circuit generator for general operation verification receives the key generator information, prover information, and verifier information, security parameters and general operation verification generated by the circuit generation module and generating a proof key and a verification key by using a circuit for use, wherein the circuit generating module generates a circuit for verification of general operations using Equation (1).

[수학식 1][Equation 1]

C =

Figure pat00003
C =
Figure pat00003

C: 서킷C: circuit

Figure pat00004
: 기준 명령어의 개수,
Figure pat00004
: the number of standard commands,

T: 기준 머신 스텝의 개수,T: number of reference machine steps,

n: 기준 시스템의 크기n: size of reference system

상기 증명 키 및 검증 키를 생성하는 단계는 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성하는 단계 및 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성하는 단계를 포함한다. The generating of the proof key and the verification key includes converting a verification rule into a mathematical form indicating a triple vector, and then converting the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier transform to generate a polynomial function and verification and generating a polynomial function by transforming the rule into a mathematical form indicating the triple vector, and then transforming the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier.

전술한 바와 같은 본 발명에 의하면, 일반연산 검증이 가능하다는 장점이 있다.According to the present invention as described above, there is an advantage that general operation verification is possible.

또한 본 발명에 의하면, 사전에 정의된 형태의 트랜잭션뿐만 아니라, 사용자가 원하는 다양한 형태의 트랜잭션에도 영지식 증명을 활용 수 있다는 장점이 있다.In addition, according to the present invention, there is an advantage that zero-knowledge proof can be utilized not only for a predefined type of transaction but also for various types of transactions desired by a user.

또한 본 발명에 의하면, 블록체인 참여자가 블록의 내용을 알지 못하더라도 전체 노드 중 증명 및 보고의 역할을 수행하는 노드가 블록의 내용이 위/변조 되지 않았음을 빠르게 검증할 수 있다는 장점이 있다.In addition, according to the present invention, even if the block chain participant does not know the contents of the block, there is an advantage that the node performing the role of proof and reporting among all nodes can quickly verify that the contents of the block are not forged/falsified.

또한 본 발명에 의하면, 참여자들에게 블록 싱크 속도를 급격하게 높여주어 새로운 참여자들이 빠르게 네트워크에 참여할 수 있다는 장점이 있다.In addition, according to the present invention, there is an advantage that new participants can quickly join the network by rapidly increasing the block sync speed for the participants.

또한 본 발명에 의하면, 영지식 증명 기술을 트랜잭션 데이터 저장에 적용할 경우 실제 데이터를 가지치기(pruning)하고 오직 데이터에 대한 증명만 남기는 방식으로 데이터를 압축시켜 데이터 저장 공간을 절약할 수 있다는 장점이 있다.In addition, according to the present invention, when the zero-knowledge proof technology is applied to transactional data storage, the data storage space can be saved by compressing the data in a way that prunes the actual data and leaves only the proof of the data. there is.

도 1은 본 발명의 일 실시예에 따른 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템의 내부 구조를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 일반 연산 검증용 서킷 생성기의 내부 구조를 설명하기 위한 블록도이다.
도 3은 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 방법의 일 실시예를 설명하기 위한 흐름도이다.
도 4는 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 과정을 설명하기 위한 예시도이다.
1 is a block diagram for explaining the internal structure of a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification according to an embodiment of the present invention is applied.
2 is a block diagram for explaining the internal structure of a circuit generator for general operation verification according to an embodiment of the present invention.
3 is a flowchart for explaining an embodiment of a method for generating a zero-knowledge proof circuit for general arithmetic verification according to the present invention.
4 is an exemplary diagram for explaining a process of generating a zero-knowledge proof circuit for general arithmetic verification according to the present invention.

전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.The above-described objects, features and advantages will be described below in detail with reference to the accompanying drawings, and accordingly, those of ordinary skill in the art to which the present invention pertains will be able to easily implement the technical idea of the present invention. In describing the present invention, if it is determined that a detailed description of a known technology related to the present invention may unnecessarily obscure the gist of the present invention, the detailed description will be omitted. Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings. In the drawings, the same reference numerals are used to indicate the same or similar components.

본 명세서에서 사용된 용어 중 “영지식 증명(zero knowledge proof; ZKP)”은 암호학에서 어느 증명자가 상대방 검증자에게 어떤 명제가 참이라는 것을 증명할 때, 그 명제의 참 거짓 여부를 제외한 어떤 지식도 노출시키지 않는 상호 작용의 절차를 의미한다.Among the terms used in this specification, “zero knowledge proof (ZKP)” means that in cryptography, when a prover proves that a certain proposition is true to the other verifier, any knowledge is exposed except whether the proposition is true or false. It means a procedure of interaction that does not let it happen.

어떠한 명제가 참이라는 것을 증명하려는 쪽을 증명자(prover)라고 하고, 증명 과정에 참여하여 증명자와 정보를 주고 받는 쪽을 검증자(verifier)라고 한다. 영지식 증명에 참여하는 당사자들이 상대방을 속이려는 목적으로 프로토콜을 임의로 변경하는 경우, 당사자들이 부정직하다 또는 정직하지 않다고 한다. 그 외의 경우에는 정직하다고 한다.The party who wants to prove that a proposition is true is called the prover, and the party who participates in the proof process and exchanges information with the prover is called the verifier. If the parties participating in the zero-knowledge proof arbitrarily change the protocol for the purpose of deceiving the other party, the parties are said to be dishonest or dishonest. Otherwise, it is said to be honest.

도 1은 본 발명의 일 실시예에 따른 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템의 내부 구조를 설명하기 위한 블록도이다. 도 2는 본 발명의 일 실시예에 따른 일반연산 검증용 서킷 생성기의 내부 구조를 설명하기 위한 블록도이다.1 is a block diagram for explaining the internal structure of a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification according to an embodiment of the present invention is applied. 2 is a block diagram for explaining the internal structure of a circuit generator for general operation verification according to an embodiment of the present invention.

도 1을 참조하면, 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템은 일반연산 검증용 서킷 생성기(100), 증명자 단말(200) 및 검증자 단말(300)을 포함한다.Referring to FIG. 1 , a blockchain system to which a zero-knowledge proof-based virtual machine capable of general operation verification is applied includes a circuit generator 100 for general operation verification, a prover terminal 200 and a verifier terminal 300 .

일반연산 검증용 서킷 생성기(100)는 일반연산 검증용 서킷을 생성하는 장치이다. 이러한 일반연산 검증용 서킷 생성기(100)는 도 2와 같이 서킷 생성 모듈(110) 및 zk-SNARK 키 생성 모듈(120)을 포함한다.The circuit generator 100 for general operation verification is a device for generating a circuit for general operation verification. The circuit generator 100 for general operation verification includes a circuit generating module 110 and a zk-SNARK key generating module 120 as shown in FIG. 2 .

서킷 생성 모듈(110)은 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기을 수신하고, 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성한 후 일반연산 검증용 서킷을 zk-SNARK 키 생성 모듈(120)에 제공한다.The circuit generation module 110 receives the number of reference instructions, the number of reference machine steps, and the size of the reference system, and verifies general operations that operate in any program having the number of reference instructions, the number of reference machine steps, and the size of the reference system. After generating a circuit for use, a circuit for general operation verification is provided to the zk-SNARK key generation module 120 .

일 실시예에서, 서킷 생성 모듈(110)은 하기의 [수학식 1]을 만족하는 일반연산 검증용 서킷을 생성한다. 즉, 일반연산 검증용 서킷 생성기(100)는

Figure pat00005
이하의 명령어, T 이하의 머신 스텝, n 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷을 생성할 수 있다.In an embodiment, the circuit generating module 110 generates a circuit for general operation verification satisfying the following [Equation 1]. That is, the circuit generator 100 for general operation verification is
Figure pat00005
You can create a circuit that runs on any program with the following instructions, machine steps less than T, and size less than n.

[수학식 1][Equation 1]

C =

Figure pat00006
C =
Figure pat00006

C: 서킷C: circuit

Figure pat00007
: 기준 명령어의 개수,
Figure pat00007
: the number of standard commands,

T: 기준 머신 스텝의 개수,T: number of reference machine steps,

n: 기준 시스템의 크기n: size of reference system

상기와 같이 [수학식 1]을 기초로

Figure pat00008
이하의 명령어, T 이하의 머신 스텝, n 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷 C는 프로그램이나 주요 입력 값에 의존하지 않고,
Figure pat00009
, T, n 값에만 의존하기 때문에 유니버셜. zk-SNARK 키 생성 모듈(120)과 결합한다면 검증 시스템의 파라미터 또한 유니버셜하게 된다.As above, based on [Equation 1]
Figure pat00008
Circuit C, which runs on any program with the following instructions, T or less machine steps, and size n or less, does not depend on the program or the main input values,
Figure pat00009
, universal because it depends only on the values of T, n. When combined with the zk-SNARK key generation module 120, the parameters of the verification system are also universal.

상기와 같은 경우, 한 번의 키 생성으로 모든 프로그램을 검증할 수 있으며, 이후에는 주어진 계산 범위에 맞는 키를 선택 가능하기 때문에 이를 통해 프로그램 별로 키를 생성하는 비용의 소모를 줄일 수 있다는 장점이 있다. In the above case, since all programs can be verified with one key generation, and after that, a key suitable for a given calculation range can be selected, thereby reducing the cost of generating a key for each program.

zk-SNARK 키 생성 모듈(120)은 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후 시큐리티 파라미터(

Figure pat00010
) 및 서킷 생성 모듈(110)에 의해 생성된 서킷(
Figure pat00011
)를 이용하여 증명 키(pk) 및 검증 키(vk)를 생성한다. The zk-SNARK key generation module 120 receives the key generator information, prover information, and verifier information, and then receives the security parameter (
Figure pat00010
) and the circuit generated by the circuit creation module 110 (
Figure pat00011
) to generate a proof key (pk) and a verification key (vk).

먼저, zk-SNARK 키 생성 모듈(120)은 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 정보를 공개하지 않고 비밀 키와 같은 특정 정보의 소유를 증명할 수 있는 증거를 생성한다. First, the zk-SNARK key generation module 120 uses the zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) algorithm to generate evidence that can prove ownership of specific information, such as a secret key, without disclosing the information. create

즉, zk-SNARK 키 생성 모듈(120)은 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성할 수 있다.That is, the zk-SNARK key generation module 120 converts the verification rule into a mathematical form indicating a triple vector, and then converts the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier to generate a polynomial function. .

보다 구체적으로, zk-SNARK 키 생성 모듈(120)은 검증 규칙을 R1CS(rank-1 constraint system) 형식으로 변환한 후, R1CS를 QAP(Quadratic Arithmetic Program)로 변환한다. 이때, 검증 규칙은 입력 금액이 출력 금액보다 큰지, 트랜잭션이 적절한 서명이 있는지 또는 입력이 UTXO에 속하는지 여부 등에 관한 것이다. More specifically, the zk-SNARK key generation module 120 converts the verification rule into a rank-1 constraint system (R1CS) format, and then converts the R1CS into a quadratic arithmetic program (QAP). At this time, the verification rules relate to whether the input amount is greater than the output amount, whether the transaction has an appropriate signature, or whether the input belongs to UTXO.

그런 다음, zk-SNARK 키 생성 모듈(120)은 랜덤 엘리먼트

Figure pat00012
를 통해 각
Figure pat00013
를 값을 산출할 수 있다. Then, the zk-SNARK key generation module 120 generates a random element
Figure pat00012
through each
Figure pat00013
value can be calculated.

여기에서,

Figure pat00014
는 QAP 인스턴스이며 증명 키(pk) 및 검증 키(vk)를 생성하는데 사용된다. 즉, 본 발명은 증명 키(pk)의 크기를 줄이기 위해 산술 회로로부터 파생된 QAP의 구조적 특성을 이용한 것이다. From here,
Figure pat00014
is a QAP instance and is used to generate the proof key (pk) and verification key (vk). That is, the present invention uses the structural characteristics of QAP derived from an arithmetic circuit in order to reduce the size of the proof key pk.

또한, R1CS이란 트리플 벡터 (A, B, C)이다. 이러한 트리플 벡터는 검증 규칙의 수학적 형태를 의미하고, QAP 는 라그랑주 다항식 또는 고속 푸리에 변환을 통해 [수학식 2]와 같이 표현된다. In addition, R1CS is a triple vector (A, B, C). Such a triple vector means a mathematical form of the verification rule, and QAP is expressed as [Equation 2] through Lagrange polynomial or fast Fourier transform.

이때, zk-SNARK 키 생성 모듈(120)은 서킷 당 증명 키(pk) 및 검증 키(vk)를 한번만 생성하게 된다.At this time, the zk-SNARK key generation module 120 generates a proof key (pk) and a verification key (vk) only once per circuit.

따라서, 한번 생성된 후에는 어느 증명자 단말(200)이 증명 키(pk)를 이용하여 증거(

Figure pat00015
)를 생성할 수 있고, 어느 검증자 단말(300)이 검증 키(vk)를 이용하여 증거(
Figure pat00016
)를 검증할 수 있는 것이다.Therefore, after being created once, a certain prover terminal 200 uses the proof key (pk) to
Figure pat00015
), which verifier terminal 300 uses the verification key vk to generate evidence (
Figure pat00016
) can be verified.

본 발명은 시간이 아닌 공간에서의 추가적인 효율성을 달성할 것. 구체적으로는, 증명 키 pk의 크기를 줄이기 위해 산술 회로로부터 파생된 QAP의 구조적 특성을 이용한 것이다. The present invention will achieve additional efficiencies in space rather than time. Specifically, the structural characteristics of QAP derived from an arithmetic circuit are used to reduce the size of the proof key pk.

따라서, 한번의 서킷 생성으로 모든 프로그램을 검증할 수 있으며, 이후에는 주어진 계산 범위에 맞는 키를 선택 가능. 이를 통해 프로그램 별로 키를 생성하는 비용의 소모를 줄일 수 있다.Therefore, all programs can be verified by creating a circuit once, and after that, a key suitable for a given calculation range can be selected. In this way, it is possible to reduce the cost of generating a key for each program.

증명자 단말(200)은 일반연산 검증용 서킷 생성기(100)에서 생성된 증명 키(pk)를 이용하여 증거(

Figure pat00017
)를 생성하는 단말이다. 이러한 증명자 단말(200)은 일반연산 검증용 서킷 생성기(100)에서 생성된 증명 키(pk), zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수 및 검증과 증명에 필요한 정보(
Figure pat00018
)를 이용하여 증거(
Figure pat00019
)를 생성한다. The prover terminal 200 uses the proof key (pk) generated by the circuit generator 100 for general operation verification,
Figure pat00017
) is the terminal that generates it. The prover terminal 200 includes the proof key (pk) generated by the circuit generator 100 for general operation verification, the coefficients of the polynomial function obtained through the zk-SNARK algorithm, and information required for verification and proof (
Figure pat00018
) using the evidence (
Figure pat00019
) is created.

일 실시예에서, 증명자 단말(200)은 하기의 [수학식 2]를 참조로 증거(

Figure pat00020
)를 생성할 수 있다. In an embodiment, the prover terminal 200 provides evidence (
Figure pat00020
) can be created.

[수학식 2][Equation 2]

Figure pat00021
Figure pat00021

Figure pat00022
: QAP 인스턴스인
Figure pat00023
와 QAP의 증거
Figure pat00024
에서 파생
Figure pat00022
: QAP instance
Figure pat00023
and proof of QAP
Figure pat00024
derived from

즉, 증명자 단말(200)은 [수학식 2]를 통해 산출된 계수 (

Figure pat00025
), QAP의 증거 (
Figure pat00026
) 및 공개키 (
Figure pat00027
) 를 이용해서 증거(
Figure pat00028
)를 생성할 수 있다. That is, the prover terminal 200 calculates the coefficient (
Figure pat00025
), evidence of QAP (
Figure pat00026
) and public key (
Figure pat00027
) using Evidence (
Figure pat00028
) can be created.

검증자 단말(300)은 검증 키(vk), 검증과 증명에 필요한 정보(

Figure pat00029
) 및 증거(
Figure pat00030
)를 수신하면 증거(
Figure pat00031
)가 유효한지 검증하는 역할을 수행한다. The verifier terminal 300 includes a verification key (vk), information required for verification and proof (
Figure pat00029
) and evidence (
Figure pat00030
) upon receipt of evidence (
Figure pat00031
) is used to verify that the

먼저, 검증자 단말(300)은 검증 키(vk)의 일부 및 검증과 증명에 필요한 정보(

Figure pat00032
) 를 이용하여 [수학식 3]을 산출하고, 검증 키(vk) 및 [수학식 3]의 결과 값을 이용하여 12개의 페어링을 계산하고 필요한 점검을 수행한다.First, the verifier terminal 300 includes a part of the verification key (vk) and information (
Figure pat00032
), calculates [Equation 3], calculates 12 pairings using the verification key vk and the result value of [Equation 3], and performs necessary checks.

[수학식 3][Equation 3]

Figure pat00033
Figure pat00033

vk: 검증 키,vk: validation key,

n: 입력 크기,n: input size,

C: 서킷C: circuit

[수학식 3]의 산출 과정에서 가변 기반 다중 스칼라 곱셈 기법을 사용하여 [수학식 3]의 계산 결과인 의 계산에 필요한 연산 량을 줄일 수 있고, 페어링 평가에는 입력 크기 n과 무관하게 일정한 시간이 걸리더라도, 이러한 평가는 매우 비싸고 작은 서킷에 대해 지배적이다.In the calculation process of [Equation 3], a variable-based multiscalar multiplication technique can be used to reduce the amount of computation required for the calculation of , which is the calculation result of [Equation 3], and a constant time is required for pairing evaluation regardless of the input size n. Even if it takes, these ratings are very expensive and prevail for small circuits.

일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템에는 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 확인한다. 이때, 가상 머신의 옵코드 실행 모듈에는 일반 연산 검증이 가능한 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있는 것이다. In a blockchain system to which a zero-knowledge proof-based virtual machine that can perform general operation verification is applied, verification of evidence is performed to confirm that the transaction is a valid transaction. At this time, since zero-knowledge proof technology capable of verifying general operations is applied to the opcode execution module of the virtual machine, even if the transaction is not executed, if the zero-knowledge evidence is verified, it can be known whether the transaction is a valid transaction.

이를 위한 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템은 코드 생성부, 컴파일러, 저장부, 스택 및 코드 실행부를 포함한다.For this purpose, the blockchain system to which a zero-knowledge proof-based virtual machine that can perform general operation verification is applied includes a code generator, a compiler, a storage, a stack, and a code execution unit.

코드 생성부는 저장부에는 저장된 영지식 증거를 솔리디터 언어로 코딩된 코드를 생성한다. 이때, 솔리디터는 사람이 이해하기 위해 만들어진 언어이기 때문에 가상머신에서 동작하기 위해서는 가상머신이 이해할 수 있는 기계어로 변경 필요하다. 따라서, 코드 생성부에 의해 생성된 코드는 컴파일러에 의해 컴파일되어 가상머신에서 동작하기 위한 이더리움 바이트코드로 변환된다.The code generating unit generates a code coded in the soliditor language based on the zero-knowledge evidence stored in the storage unit. At this time, since Soliditor is a language created to be understood by humans, it is necessary to change the language to a machine language that the virtual machine can understand in order to operate in a virtual machine. Accordingly, the code generated by the code generator is compiled by the compiler and converted into Ethereum bytecode for operation in the virtual machine.

컴파일러는 코드 실행부에 의해 생성된 코드를 컴파일하여 이더리움 바이트코드를 생성하고, 이더리움 바이트코드를 코드 실행부에 제공한다. The compiler compiles the code generated by the code execution unit to generate Ethereum bytecode, and provides the Ethereum bytecode to the code execution unit.

저장부에는 증명자 단말에 의해 생성된 영지식 증거가 저장된다.가상 머신은 저장부에 저장된 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있다. 즉, 본 발명의 일 실시예에 따른 가상 머신은 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도 영지식 증거에 대한 검증을 통해 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있다.The storage unit stores the zero-knowledge evidence generated by the prover terminal. When the virtual machine verifies the zero-knowledge evidence stored in the storage unit, it can know whether the corresponding transaction is a valid transaction. That is, since the zero-knowledge proof technology is applied to the virtual machine according to an embodiment of the present invention, it is possible to know whether the corresponding transaction is a valid transaction through verification of the zero-knowledge evidence without executing the transaction.

스택에는 코드 실행부에 의해 이더리움 바이트코드가 실행되는 과정에서 이더리움 바이트코드에서 분리된 옵코드가 저장된다. In the stack, the opcode separated from the Ethereum bytecode is stored in the process of executing the Ethereum bytecode by the code execution unit.

코드 실행부는 컴파일부에 의해 생성된 이더리움 바이트코드를 실행하여 영지식 증거에 대한 검증을 수행한다. 이때, 코드 실행부는 이더리움 바이트코드를 옵코드로 분리한 후 스택에 저장하며, 스택에 저장된 옵코드는 순차적으로 실행된다.The code execution unit executes the Ethereum bytecode generated by the compilation unit to verify zero-knowledge evidence. At this time, the code execution unit separates the Ethereum bytecode into opcodes and stores them in the stack, and the opcodes stored in the stack are sequentially executed.

본 발명은 코드 실행부에 영지식 증명 기술이 적용됨으로써 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있다. According to the present invention, since zero-knowledge proof technology is applied to the code execution unit, even if the transaction is not executed, if the zero-knowledge proof is verified, it can be known whether the transaction is a valid transaction.

상기와 같이 가상 머신의 옵코드 실행 모듈에 일반 연산 검증이 가능한 영지식 증명 기술이 적용되면 스토리지 모듈에 저장되는 데이터 중 TX 데이터가 영지식 증명으로 대체된다. 따라서, 본 발명은 가상 머신의 옵코드 실행 모듈에는 일반 연산 검증이 가능한 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있는 것이다. As described above, when zero-knowledge proof technology capable of verifying general operations is applied to the opcode execution module of the virtual machine, TX data among data stored in the storage module is replaced with zero-knowledge proof. Therefore, in the present invention, since zero-knowledge proof technology that can verify general operation is applied to the opcode execution module of the virtual machine, even if the transaction is not executed, if the verification of the zero-knowledge evidence is performed, it is possible to know whether the transaction is a valid transaction. there will be

도 3은 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 방법의 일 실시예를 설명하기 위한 흐름도이다.3 is a flowchart for explaining an embodiment of a method for generating a zero-knowledge proof circuit for general arithmetic verification according to the present invention.

도 3을 참조하면, 일반연산 검증용 서킷 생성기(100)는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 일반연산 검증용 서킷을 생성한다(단계 S310).Referring to FIG. 3 , the general operation verification circuit generator 100 generates a general operation verification circuit having the number of reference instructions, the number of reference machine steps, and the size of the reference system (step S310 ).

단계 S310에 대한 일 실시예에서, 일반연산 검증용 서킷 생성기(100)는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기을 수신하고, 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성할 수 있다. In one embodiment for step S310, the circuit generator 100 for general operation verification receives the number of reference instructions, the number of reference machine steps, and the size of the reference system, and the number of reference instructions, the number of reference machine steps, and the reference system It is possible to create a circuit for general operation verification that works in any program with a size of .

이때, 일반연산 검증용 서킷 생성기(100)는 [수학식 1]과 같이

Figure pat00034
이하의 명령어, T 이하의 머신 스텝, n 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷을 생성할 수 있다.At this time, the circuit generator 100 for general operation verification is performed as in [Equation 1].
Figure pat00034
You can create a circuit that runs on any program with the following instructions, machine steps less than T, and size less than n.

상기와 같이 [수학식 1]을 기초로

Figure pat00035
이하의 명령어, T 이하의 머신 스텝, n 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷 C는 프로그램이나 주요 입력 값에 의존하지 않고,
Figure pat00036
, T, n 값에만 의존하기 때문에 유니버셜. zk-SNARK 키 생성 모듈(120)과 결합한다면 검증 시스템의 파라미터 또한 유니버셜하게 된다.As above, based on [Equation 1]
Figure pat00035
Circuit C, which runs on any program with the following instructions, T or less machine steps, and size n or less, does not depend on the program or the main input values,
Figure pat00036
, universal because it depends only on the values of T, n. When combined with the zk-SNARK key generation module 120, the parameters of the verification system are also universal.

상기와 같은 경우, 한 번의 키 생성으로 모든 프로그램을 검증할 수 있으며, 이후에는 주어진 계산 범위에 맞는 키를 선택 가능하기 때문에 이를 통해 프로그램 별로 키를 생성하는 비용의 소모를 줄일 수 있다는 장점이 있다. In the above case, since all programs can be verified with one key generation, and after that, a key suitable for a given calculation range can be selected, thereby reducing the cost of generating a key for each program.

일반연산 검증용 서킷 생성기(100)는 상기 일반연산 검증용 서킷 및 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 증명 키 및 검증 키를 생성한다(단계 S320).The general operation verification circuit generator 100 generates a proof key and a verification key using the general operation verification circuit and zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) algorithm (step S320).

단계 S320에 대한 일 실시예에서, 일반연산 검증용 서킷 생성기(100)는 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후, 시큐리티 파라미터 및 상기 서킷 생성 모듈에 의해 생성된 일반연산 검증용 서킷을 이용하여 증명 키 및 검증 키를 생성한다.In an embodiment for step S320, the circuit generator 100 for general operation verification receives the key generator information, prover information, and verifier information, and then provides security parameters and general operation verification for verification generated by the circuit generation module. The circuit is used to generate a proof key and a verification key.

이때, 일반연산 검증용 서킷 생성기(100)는 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성할 수 있다.At this time, the circuit generator 100 for general operation verification converts the verification rule into a mathematical form indicating a triple vector, and then converts the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier to generate a polynomial function. .

증명자 단말은 상기 일반연산 검증용 서킷을 포함하는 증명 키, 상기 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거를 생성한다(단계 S330).The prover terminal generates evidence using the proof key including the general operation verification circuit, the polynomial function coefficients obtained through the zk-SNARK algorithm, and the information necessary for verification and verification among the general operation verification circuits. (Step S330).

검증자 단말은 상기 검증 키, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보 및 상기 증거를 이용하여 상기 증거가 유효한지 검증을 실행한다(단계 S340).The verifier terminal verifies whether the evidence is valid by using the verification key, information necessary for verification and verification among the general operation verification circuit, and the evidence (step S340).

도 4는 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 과정을 설명하기 위한 예시도이다.4 is an exemplary diagram for explaining a process of generating a zero-knowledge proof circuit for general arithmetic verification according to the present invention.

도 4를 참조하면, 주어진 증거 한 개(a single proof)의 정당성을 증명하는 것은 그것과 연관된 다른 증거(many proofs)들의 정당성을 증명하는 것이다. 예를 들어, 검증자가 증명자에게 제시한 5가지 문제를 증명자가 올바르게 해결했는지 확인하는 시나리오를 참조하여 설명하기로 한다.Referring to FIG. 4 , to prove the validity of a single proof is to prove the validity of other proofs (many proofs) associated with it. For example, we will explain with reference to a scenario in which the prover correctly solves five problems presented to the prover by the verifier.

종래의 영지식 증명은 도 4a와 같이 증명자 A는 4개의 증거를 만들어 제출해야 한다. 그리고, 그리고 검증자 B, C, D, E는 자신들이 받은 Proof를 이용해 검증해야 한다.In the conventional zero-knowledge proof, as shown in FIG. 4A , prover A must create and submit four pieces of evidence. And, verifiers B, C, D, and E must verify using the Proof they received.

하지만, 본 발명에 따른 도 4b와 같이 재귀 영지식 증명을 이용하면 증명자 A는 최종적으로 산출된 마지막 Proof_4만 제출하고, 검증자 B, C, D, E는 이것을 이용해 검증한다. However, if recursive zero-knowledge proof is used as shown in FIG. 4B according to the present invention, prover A submits only the finally calculated last Proof_4, and verifiers B, C, D, and E verify using this.

이를 도 4b를 참고하여 상세히 설명하면, 상기 검증자 단말(300)이 증명자 단말(200)에 복수의 문제를 제시하면, 상기 증명자 단말(200)은 재귀 영지식 증명을 이용하여 상기 복수의 문제 중 첫 번째 문제(Question 1)에 해당하는 증거 1(Proof 1)을 생성하고, 복수의 문제 중 두 번째 문제(Question 2)와 상기 증거 1(Proof 1)을 이용하여 증거 2(Proof 2)를 생성하고, 복수의 문제 중 최종 세 번째 문제(Question 3)와 상기 증거 2(Proof 2)를 이용하여 최종 세 번 째 문제(Question 3)에 대한 최종 증거 3(Proof 3)을 생성하고, 4B, when the verifier terminal 300 presents a plurality of problems to the prover terminal 200, the prover terminal 200 uses a recursive zero-knowledge proof to display the plurality of problems. Proof 1 (Proof 1) corresponding to the first problem (Question 1) is generated, and Proof 2 (Proof 2) is generated using the second problem (Question 2) and the above evidence 1 (Proof 1) among the plurality of problems. Generates the final proof 3 (Proof 3) for the final third problem (Question 3) using the third final problem (Question 3) and the evidence 2 (Proof 2) among the plurality of problems,

상기 증명자 단말(200)은 첫 번째 문제(Question 1)에 해당하는 증거 1(Proof 1)을 이용하여 최종 세 번 째 문제(Question 3)에 해당하는 최종 증거 3(Proof 3)을 생성하여 상기 복수의 문제들에 대한 각각의 증거들을 제출하지 않고 증거 1, 2, 3을 제외한 상기 최종 증거 3(Proof 3)만을 상기 검증자 단말(300)에 제출하며, The prover terminal 200 generates final evidence 3 (Proof 3) corresponding to the third final problem (Question 3) using evidence 1 (Proof 1) corresponding to the first problem (Question 1), Submit only the final evidence 3 (Proof 3) except for evidence 1, 2, and 3 without submitting each evidence for a plurality of problems to the verifier terminal 300,

상기 검증자 단말(300)은 상기 최종 증거 3(Proof 3)만을 검증하여 상기 최종 증거 3(Proof 3) 및 최종 증거 3(Proof 3)과 연관된 나머지 증거 1, 2, 3의 정당성을 증명한다.The verifier terminal 300 verifies only the final proof 3 (Proof 3) to prove the validity of the final proof 3 (Proof 3) and the remaining proofs 1, 2, and 3 associated with the final proof 3 (Proof 3).

한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.Although it has been described with reference to the limited embodiments and drawings, the present invention is not limited to the above embodiments, and various modifications and variations are possible from these descriptions by those of ordinary skill in the art to which the present invention pertains. Accordingly, the spirit of the present invention should be understood only by the claims described below, and all equivalents or equivalent modifications thereof will fall within the scope of the spirit of the present invention.

100: 일반연산 검증용 서킷 생성기
110: 서킷 생성 모듈
120: zk-SNARK 키 생성 모듈
200: 증명자 단말
300: 검증자 단말
100: Circuit generator for general operation verification
110: circuit creation module
120: zk-SNARK key generation module
200: prover terminal
300: verifier terminal

Claims (4)

사전에 정의된 형태의 트랜잭션뿐만 아니라, 사용자가 원하는 형태의 트랜잭션에도 영지식 증명을 활용할 수 있도록 하는 일반연산 검증이 가능한 영지식 증명 기술이 적용된 가상머신에 있어서,
기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 일반연산 검증용 서킷을 생성하고, 상기 일반연산 검증용 서킷 및 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 증명 키 및 검증 키를 생성하는 일반연산 검증용 서킷 생성기(100);
상기 일반연산 검증용 서킷을 포함하는 증명 키, 상기 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거를 생성하는 증명자 단말(200); 및
상기 일반연산 검증용 서킷을 포함하는 검증 키, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보 및 상기 증거를 이용하여 상기 증거가 유효한지 검증을 실행하는 검증자 단말(300)을 포함하고,
상기 일반연산 검증용 서킷 생성기(100)는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성하는 서킷 생성 모듈(110); 및 상기 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후, 시큐리티 파라미터 및 상기 서킷 생성 모듈에 의해 생성된 일반연산 검증용 서킷을 이용하여 증명 키 및 검증 키를 생성하는 zk-SNARK 키 생성 모듈(120)을 포함하며,
상기 zk-SNARK 키 생성 모듈(120)은 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성하고,
상기 서킷 생성 모듈(110)은 수학식 1을 이용하여 일반연산 검증용 서킷을 생성하는 것을 특징으로 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템.

[수학식 1]
C =
Figure pat00037


C: 서킷
Figure pat00038
: 기준 명령어의 개수,
T: 기준 머신 스텝의 개수,
n: 기준 시스템의 크기
In a virtual machine to which zero-knowledge proof technology is applied, which can perform general operation verification that enables zero-knowledge proof to be used not only for predefined types of transactions, but also for transactions of any type desired by the user,
A circuit for general operation verification having the number of reference instructions, the number of reference machine steps, and the size of the reference system is generated, and the general operation verification circuit and zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) algorithm are generated. a circuit generator 100 for general operation verification that generates a proof key and a verification key by using;
A prover terminal ( 200); and
A verification key including the general operation verification circuit, information necessary for verification and proof among the general operation verification circuit, and a verifier terminal 300 that verifies whether the evidence is valid using the evidence,
The general operation verification circuit generator 100 includes: a circuit generation module 110 for generating a general operation verification circuit that operates in any program having the number of reference instructions, the number of reference machine steps, and the size of the reference system; And after receiving the key generator information, prover information, and verifier information, zk-SNARK key generation that generates a proof key and a verification key using a security parameter and a circuit for general operation verification generated by the circuit generation module comprising a module 120,
The zk-SNARK key generation module 120 converts the verification rule into a mathematical form indicating a triple vector, and then converts the verification rule converted into the triple vector into a Lagrange polynomial or fast Fourier to generate a polynomial function,
The circuit generating module 110 is a block chain system to which a zero-knowledge proof-based virtual machine capable of general operation verification, characterized in that it generates a circuit for general operation verification by using Equation (1).

[Equation 1]
C =
Figure pat00037


C: circuit
Figure pat00038
: the number of standard commands,
T: number of reference machine steps,
n: size of reference system
제1항에 있어서,
상기 증명자 단말(200)은 상기 일반연산 검증용 서킷 생성기(100)에서 생성된 증명 키를 이용하여 증거를 생성하되, 수학식 2를 이용하여 증거를 생성하며, 수학식 2를 통해 다항함수의 계수를 계산하고, 상기 다항함수의 계수, QAP의 증거, 공개키를 이용하여 증거를 생성하며,
상기 검증자 단말(300)은 검증 키의 일부 및 검증과 증명에 필요한 정보를 이용하여 수학식 3을 산출하고, 검증 키 및 수학식 3의 결과 값을 이용하여 12개의 페어링을 계산하고 필요한 점검을 수행하며, 수학식 3의 산출 과정에서 가변 기반 다중 스칼라 곱셈 기법을 사용하여 수학식 3의 계산 결과인 의 계산에 필요한 연산량을 줄일 수 있는 것을 특징으로 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템.

[수학식 2]
Figure pat00039

Figure pat00040
: QAP 인스턴스인
Figure pat00041
와 QAP의 증거
Figure pat00042
에서 파생

[수학식 3]
Figure pat00043

vk: 검증 키,
n: 입력 크기,
C: 서킷
According to claim 1,
The prover terminal 200 generates evidence using the proof key generated by the circuit generator 100 for general operation verification, and generates the evidence using Equation 2, Calculate the coefficient, and generate evidence using the coefficient of the polynomial function, the evidence of QAP, and the public key,
The verifier terminal 300 calculates Equation 3 using a part of the verification key and information required for verification and proof, calculates 12 pairings using the verification key and the result value of Equation 3, and performs necessary checks A zero-knowledge proof-based virtual machine capable of performing general arithmetic verification, characterized in that it is possible to reduce the amount of computation required for the calculation of Eq. Blockchain system to which this is applied.

[Equation 2]
Figure pat00039

Figure pat00040
: QAP instance
Figure pat00041
and proof of QAP
Figure pat00042
derived from

[Equation 3]
Figure pat00043

vk: validation key,
n: input size,
C: circuit
제1항에 있어서,
상기 가상머신은 코드 생성부, 컴파일러, 저장부, 스택 및 코드 실행부를 포함하며,
상기 코드 생성부는 상기 저장부에 저장된 영지식 증거를 솔리디티 언어로 코딩된 코드를 생성하고,
상기 컴파일러는 상기 코드 생성부에 의해 생성된 코드를 컴파일하여 이더리움 바이트코드를 생성하고, 상기 이더리움 바이트코드를 상기 코드 실행부에 제공하며,
상기 저장부에는 증명자 단말(200)에 의해 생성된 영지식 증거가 저장되고,
상기 스택에는 상기 코드 실행부에 의해 이더리움 바이트 코드가 실행되는 과정에서 상기 이더리움 바이트코드에서 분리된 옵코드가 저장되며,
상기 코드 실행부는 상기 컴파일러에 의해 생성된 상기 이더리움 바이트코드를 실행하여 영지식 증거에 대한 검증을 수행하는 것을 특징으로 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템.
According to claim 1,
The virtual machine includes a code generation unit, a compiler, a storage unit, a stack and a code execution unit,
The code generation unit generates a code coded in a solidity language using the zero-knowledge evidence stored in the storage unit,
The compiler compiles the code generated by the code generation unit to generate an Ethereum bytecode, and provides the Ethereum bytecode to the code execution unit,
Zero-knowledge evidence generated by the prover terminal 200 is stored in the storage unit,
In the stack, the opcode separated from the Ethereum bytecode is stored in the process of executing the Ethereum bytecode by the code execution unit,
The code execution unit executes the Ethereum bytecode generated by the compiler to verify zero-knowledge evidence.
제3항에 있어서,
상기 가상머신은 상기 코드 실행부에 영지식 증명이 적용됨으로써 트랜잭션을 실행하지 않아도 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 확인할 수 있으며,
상기 코드 실행부는 상기 이더리움 바이트코드를 옵코드로 분리한 후 상기 스택에 저장하며, 상기 스택에 저장된 옵코드를 순차적으로 실행하는 것을 특징으로 하는 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템.
4. The method of claim 3,
The virtual machine can check whether the transaction is a valid transaction by applying the zero-knowledge proof to the code execution unit, so that the zero-knowledge proof is verified without executing the transaction.
The code execution unit separates the Ethereum bytecode into opcodes, stores it in the stack, and sequentially executes the opcodes stored in the stack. blockchain system.
KR1020200124393A 2020-09-25 2020-09-25 Blockchain system with zero-knowledge proof virtual machine applied for general operation KR20220041334A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200124393A KR20220041334A (en) 2020-09-25 2020-09-25 Blockchain system with zero-knowledge proof virtual machine applied for general operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200124393A KR20220041334A (en) 2020-09-25 2020-09-25 Blockchain system with zero-knowledge proof virtual machine applied for general operation

Publications (1)

Publication Number Publication Date
KR20220041334A true KR20220041334A (en) 2022-04-01

Family

ID=81183660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200124393A KR20220041334A (en) 2020-09-25 2020-09-25 Blockchain system with zero-knowledge proof virtual machine applied for general operation

Country Status (1)

Country Link
KR (1) KR20220041334A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117425154A (en) * 2023-10-19 2024-01-19 南京邮电大学 Radar network connectivity optimization and target tracking method for position privacy protection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117425154A (en) * 2023-10-19 2024-01-19 南京邮电大学 Radar network connectivity optimization and target tracking method for position privacy protection

Similar Documents

Publication Publication Date Title
KR102170820B1 (en) A system to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification
KR102687781B1 (en) System and method for authenticating off-chain data based on proof verification
Groth et al. Updatable and universal common reference strings with applications to zk-SNARKs
Camenisch et al. On the portability of generalized schnorr proofs
JP7428704B2 (en) Computer-implemented systems and methods for transferring access to digital resources
EP3219050A1 (en) Manicoding for communication verification
Chen et al. Data dynamics for remote data possession checking in cloud storage
CN111640018B (en) Block chain transaction existence verification method and device
Gabizon et al. Plumo: Towards scalable interoperable blockchains using ultra light validation systems
CN111241586B (en) Anonymous processing method and system for block link address, terminal and storage medium
CN116975901A (en) Identity verification method, device, equipment, medium and product based on block chain
KR20220041334A (en) Blockchain system with zero-knowledge proof virtual machine applied for general operation
CN116975936B (en) Finance qualification proving method and finance qualification verifying method
CN112529550A (en) Anonymous transfer method and device based on block chain and electronic equipment
KR102372111B1 (en) Verification system based on zero knowledge for block chain virtual machine
CN115801288B (en) Verification method, system and equipment based on block chain and zero knowledge proof
CN115473632B (en) Improved multi-layer linkable ring signature generation method and device
CN114026586A (en) Zero knowledge or pay protocol for granting access to encrypted assets
KR102494873B1 (en) Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification
Hwang et al. Blockchain-based automatic indemnification mechanism based on proof of violation for cloud storage services
KR102519490B1 (en) Method for verifying block chain virtual machine based on zero knowledge
Pagnin et al. Anonymous single-round server-aided verification
Zhang et al. Blockchain data provenance scheme based on grouping consensus and bm tree
Geng et al. Blockchain-inspired Framework for Runtime Verification of IoT Ecosystem Task Fulfillment
Jeong et al. A study of universal zero-knowledge proof circuit-based virtual machines that validate general operations & reduce transaction validation