KR102494873B1 - Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification - Google Patents

Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification Download PDF

Info

Publication number
KR102494873B1
KR102494873B1 KR1020200140719A KR20200140719A KR102494873B1 KR 102494873 B1 KR102494873 B1 KR 102494873B1 KR 1020200140719 A KR1020200140719 A KR 1020200140719A KR 20200140719 A KR20200140719 A KR 20200140719A KR 102494873 B1 KR102494873 B1 KR 102494873B1
Authority
KR
South Korea
Prior art keywords
block
transaction
nodes
zero
private
Prior art date
Application number
KR1020200140719A
Other languages
Korean (ko)
Other versions
KR20220056036A (en
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 KR1020200140719A priority Critical patent/KR102494873B1/en
Publication of KR20220056036A publication Critical patent/KR20220056036A/en
Application granted granted Critical
Publication of KR102494873B1 publication Critical patent/KR102494873B1/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
    • 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/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0613Third-party assisted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/08Auctions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • 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

Abstract

본 발명은 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에 관한 것으로, 분산 데이터베이스를 공유하는 블록체인 상에서 정보를 공유하며, 비밀키와 공개키를 보유하는 복수의 노드를 포함하되, 복수의 노드 중 어느 하나에서 거래가 요청되면, 복수의 노드 중 적어도 하나는, 각 노트에 암호화하여 저장된 가치가 미리 설정된 유효 범위 내에 포함되는지 여부를 확인하고, 가치가 암호화된 상태에서 입력 노트의 가치 합과 출력 노트의 가치 합이 동일한지 여부를 확인하고, 가치가 확인되면, 노트 등록소에 저장된 입력 노트를 삭제하고, 출력 노트를 새로 저장하며, 복수의 노드 중 어느 하나는, 사용자 입력을 수신하는 리시버; 거래에 이용되는 복수개의 항목 중 암호화가 요구되는 일부 항목을 사용자의 입력에 따라 결정하고, 타원 곡선 암호 방식을 이용하여 일부 항목이 암호화되도록 스마트 컨트랙트를 구성하고, 일부 항목에 대해서는 영지식 증명을 통해 증명을 수행하여 스마트 컨트랙트를 이용한 거래를 수행하고, 거래의 수행 결과 획득된 복수의 결과값을 저장하는 하나 이상의 프로세서; 및 프로세서를 통해 실행되는 적어도 하나의 명령이 저장된 메모리를 포함한다.The present invention relates to a transaction execution device for realizing a virtual machine based on a zero-knowledge proof circuit for verifying general operations. Including, but when a transaction is requested from any one of the plurality of nodes, at least one of the plurality of nodes checks whether the value encrypted and stored in each note is within a preset validity range, and the input note in a state where the value is encrypted Check whether the sum of values of and the sum of output notes are the same, and if the value is confirmed, delete the input note stored in the note registry, save the output note as a new one, and any one of the plurality of nodes, user input a receiver that receives; Among the plurality of items used in transactions, some items that require encryption are determined according to user input, a smart contract is constructed so that some items are encrypted using elliptic curve cryptography, and some items are encrypted through zero-knowledge proof. One or more processors that perform proof to perform a transaction using a smart contract and store a plurality of result values obtained as a result of performing the transaction; and a memory in which at least one command executed by the processor is stored.

Description

일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치{TRANSACTION EXECUTION DEVICE TO IMPLEMENT A VIRTUAL MACHINE BASED ON A ZERO-KNOWLEDGE PROOF CIRCUIT FOR GENERAL OPERATION VERIFICATION}Transaction Execution Device for Implementing Zero-Knowledge Proof Circuit-based Virtual Machine for General Operation Verification

본 발명은 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에 관한 것으로, 보다 구체적으로 블록체인 참여자가 블록의 내용을 알지 못하더라도 전체 노드 중 증명 및 보고의 역할을 수행하는 노드가 블록의 내용이 위/변조 되지 않았음을 빠르게 검증할 수 있도록 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에 관한 것이다.The present invention relates to a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for general operation verification, and more specifically, even if a block chain participant does not know the contents of a block, it performs a role of proof and reporting among all nodes It relates to a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations that allows a node to quickly verify that the contents of a block are not forged or tampered with.

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

블록체인은 퍼블릭 블록체인(Public Blockchain)과 프라이빗 블록체인(Private Blockchain)으로 구분될 수 있으며, 퍼블릭 블록체인은 불특정 다수가 네트워크에 참여하는 것으로, 거래하는 모든 사람들이 기록을 가지고 있어 신뢰도가 높다는 장점이 있지만 최초 규칙을 바꾸기 어렵고 속도가 느리다는 단점이 있다.Blockchain can be divided into public blockchain and private blockchain. Public blockchain is an unspecified number of people participating in the network, and the advantage of high reliability is that all people who transact have records However, it has the disadvantage that it is difficult to change the initial rule and it is slow.

프라이빗 블록체인은 참여자가 제한된 블록체인으로, 퍼블릭에 비해 시간이 빠르고 효율도 높다는 장점이 있지만 접근성이 떨어지는 단점이 이에 따라 퍼블릭 블록체인과 프라이빗 블록체인의 문제점을 해결하고자 하는 요구가 증대되고 있다.The private blockchain is a blockchain with limited participants, and has the advantage of being faster and more efficient than the public one.

한편, 블록체인 기반으로 금융거래, 부동산 계약, 공증 등 다양한 형태의 계약을 체결하고 이행하기 위해 스마트 컨트랙트(smart contract) 기능이 등장하였다. 이는 계약조건을 블록체인이 기록하고 조건이 충족되었을 경우 자동으로 계약이 실행되게 하는 프로그램으로, 개발자가 직접 계약조건과 내용을 코딩할 수 있기 때문에 원칙적으로 인간이 상상할 수 있는 모든 종류의 계약을 구현할 수 있다. 예를 들면, 이더리움 플랫폼을 이용하여 다양한 종류의 계약이 구현될 수 있다.On the other hand, a smart contract function has emerged to conclude and fulfill various types of contracts such as financial transactions, real estate contracts, and notarization based on blockchain. This is a program that records the contract conditions in the blockchain and automatically executes the contract when the conditions are met. Since the developer can directly code the contract conditions and contents, in principle, it is possible to implement all types of contracts that humans can imagine. can For example, various types of contracts can be implemented using the Ethereum platform.

그러나, 스마트 컨트랙트를 이용할 때 정보가 모두 공개되는 문제가 있으며, 거래시 사용자가 원하는 항목만 비공개로 하여 거래를 수행하고자 하는 요구가 증대되고 있다.However, there is a problem in that all information is disclosed when using smart contracts, and the demand for conducting transactions by keeping only the items desired by the user in the transaction is increasing.

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

하지만 EVM은 JVM(Java Virtual Machine)과 같은 기존 가상머신에 비해 효율이 매우 떨어지고, 또한 복잡한 어플리케이션 환경을 지원하기 어렵다는 문제점이 있다. However, EVM has a problem 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 emerged over the past decade, but no innovation has occurred in terms of accumulating and storing transactions, and in this case, there is a limit to scalability because all transaction contents must be verified.

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

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

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

본 발명은 스마트 컨트랙트 및 영지식 증명을 이용함으로써, 범용적으로 이용할 수 있는 블록체인을 통해 일반 거래가 가능한 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치를 제공하는 것을 목적으로 한다.The purpose of the present invention is to provide a transaction execution device for realizing a virtual machine based on a zero-knowledge proof circuit for general operation verification that enables general transactions through a universally usable block chain by using smart contracts and zero-knowledge proofs. do.

또한, 본 발명은 블록체인에 올라가는 데이터를 장부로 한정하지 않고 스마트 컨트랙트로 넓히고 일부를 암호화하고 암호화한 것을 영지식 증명을 통해 증명하여 거래가 이루어질 수 있도록 하여, 스마트 컨트랙트를 만드는 사람이 원하는 부분을 선택적으로 암호화하도록 함으로써, 범용적으로 이용하는 것이 가능한 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치를 제공하는 것을 목적으로 한다.In addition, the present invention does not limit the data on the blockchain to a ledger, but expands it to a smart contract, encrypts some of it, and proves the encrypted data through zero-knowledge proof so that a transaction can be made. It is an object of the present invention to provide a transaction execution device for implementing a zero-knowledge proof circuit-based virtual machine for general operation verification that can be used universally by encrypting with .

또한, 트랜잭션 서명에 비밀키와 그룹 비밀키를 함께 사용하기 때문에, 비밀키가 해킹되었다고 하더라도 그룹 비밀키의 서명을 요청하는 구성을 통해 해킹으로 인한 피해를 방지할 수 있는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치를 제공하는 것을 목적으로 한다.In addition, since the private key and the group private key are used together to sign the transaction, even if the private key is hacked, it is a zero-knowledge proof for general operation verification that can prevent damage caused by hacking by requesting the signature of the group private key. An object of the present invention is to provide a transaction execution device for implementing a circuit-based virtual machine.

또한, 본 발명은 사전에 정의된 형태의 트랜잭션뿐만 아니라, 사용자가 원하는 다양한 형태의 트랜잭션에도 영지식 증명을 활용 수 있도록 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신 및 이의 실행 방법을 제공하는 것을 목적으로 한다. In addition, the present invention is to provide a virtual machine based on a zero-knowledge proof circuit for general operation verification and an execution method thereof that enable zero-knowledge proof to be used not only for predefined types of transactions but also for various types of transactions desired by users. The purpose.

또한, 본 발명은 블록체인 참여자가 블록의 내용을 알지 못하더라도 전체 노드 중 증명 및 보고의 역할을 수행하는 노드가 블록의 내용이 위/변조 되지 않았음을 빠르게 검증할 수 있도록 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신 및 이의 실행 방법을 제공하는 것을 목적으로 한다. In addition, the present invention is for general operation verification, which allows a node that plays a role of proof and reporting among all nodes to quickly verify that the contents of a block are not forged or tampered with, even if the block chain participants do not know the contents of the block. Its purpose is to provide a zero-knowledge proof circuit-based virtual machine and its execution method.

또한, 본 발명은 참여자들에게 블록 싱크 속도를 급격하게 높여주어 새로운 참여자들이 빠르게 네트워크에 참여할 수 있도록 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신 및 이의 실행 방법을 제공하는 것을 목적으로 한다. In addition, an object of the present invention is to provide a zero-knowledge proof circuit-based virtual machine for verifying general operations and an execution method thereof, which rapidly increase the block sync speed to participants so that new participants can quickly participate in the network.

또한, 본 발명은 영지식 증명 기술을 트랜잭션 데이터 저장에 적용할 경우 실제 데이터를 가지치기(pruning)하고 오직 데이터에 대한 증명만 남기는 방식으로 데이터를 압축시켜 데이터 저장 공간을 절약할 수 있도록 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신 및 이의 실행 방법을 제공하는 것을 목적으로 한다. In addition, when the zero-knowledge proof technology is applied to transactional data storage, the present invention prunes actual data and compresses data in a manner that leaves only evidence for the data, thereby saving data storage space. Its purpose is to provide a zero-knowledge proof circuit-based virtual machine for verification and its execution method.

본 발명의 바람직한 일 실시예에 따르면, 분산 데이터베이스를 공유하는 블록체인 상에서 정보를 공유하며, 비밀키와 공개키를 보유하는 복수의 노드를 포함하되, 상기 복수의 노드 중 어느 하나에서 거래가 요청되면, 상기 복수의 노드 중 적어도 하나는, 각 노트에 암호화하여 저장된 가치가 미리 설정된 유효 범위 내에 포함되는지 여부를 확인하고, 상기 가치가 암호화된 상태에서 입력 노트의 가치 합과 출력 노트의 가치 합이 동일한지 여부를 확인하고, 상기 가치가 확인되면, 노트 등록소에 저장된 상기 입력 노트를 삭제하고, 상기 출력 노트를 새로 저장하며, 상기 복수의 노드 중 어느 하나는, 사용자 입력을 수신하는 리시버; 거래에 이용되는 복수개의 항목 중 암호화가 요구되는 일부 항목을 상기 사용자의 입력에 따라 결정하고, 타원 곡선 암호 방식을 이용하여 상기 일부 항목이 암호화되도록 스마트 컨트랙트를 구성하고, 상기 일부 항목에 대해서는 영지식 증명을 통해 증명을 수행하여 상기 스마트 컨트랙트를 이용한 거래를 수행하고, 상기 거래의 수행 결과 획득된 복수의 결과값을 저장하되, 특정 그룹에 가입된 노드의 공개키 중 일부에 대해 소정의 해쉬 알고리즘을 통해 각각의 일련의 비트열이 되도록 변환하고, 상기 각각의 일련의 비트열에 대해 소정의 비트 연산을 수행하여 합성된 비트열로부터 상기 비밀키와 동일한 비트수를 갖는 그룹 비밀키를 소정 주기로 생성하여, 상기 그룹 비밀키를 상기 특정 그룹에 가입된 노드에 배포하는 동작을 수행하는 하나 이상의 프로세서; 및 상기 프로세서를 통해 실행되는 적어도 하나의 명령이 저장된 메모리;를 포함하고, 상기 복수의 노드 중 어느 하나가 상기 특정 그룹에 가입되어 있을 때, 상기 프로세서는, 상기 특정 그룹에 노드의 추가 또는 탈퇴를 포함하는 변경이 발생할 경우, 변경이 일어난 후 상기 특정 그룹에 가입된 노드의 공개키를 기초로 상기 그룹 비밀키를 새롭게 생성하여 변경이 일어난 후 상기 특정 그룹에 가입된 노드에 배포하며, 상기 복수의 노드는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 일반연산 검증용 서킷을 생성하고, 상기 일반연산 검증용 서킷 및 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 증명 키 및 검증 키를 생성하는 일반연산 검증용 서킷 생성기; 상기 일반연산 검증용 서킷을 포함하는 증명 키, 상기 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거를 생성하는 증명자 단말; 및 상기 일반연산 검증용 서킷을 포함하는 검증 키, 상기 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보 및 상기 증거를 이용하여 상기 증거가 유효한지 검증을 실행하는 검증자 단말을 포함하고, 상기 일반연산 검증용 서킷 생성기는 기준 명령어의 개수, 기준 머신 스텝의 개수 및 기준 시스템의 크기를 갖는 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성하는 서킷 생성 모듈; 키 생성자 정보, 증명자 정보 및 검증자 정보를 수신한 후 시큐리티 파라미터 및 상기 서킷 생성 모듈에 의해 생성된 서킷을 이용하여 증명 키 및 검증 키를 생성하는 zk-SNARK 키 생성 모듈을 포함하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에 있어서, 상기 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치는 트랜잭션을 실행하지 않아도 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 확인할 수 있도록 저장부, 코드 생성부, 컴파일러, 스택 및 코드 실행부를 더 포함하며, 상기 저장부는 증명자 단말(300)에 의해 생성된 증거가 저장되고, 상기 코드 생성부는 상기 저장부에 저장된 증거를 솔리디티 언어로 코딩된 코드를 생성하고, 상기 코드 생성부에 의해 생성된 코드는 상기 컴파일러에 의해 컴파일되어 가상머신에서 동작하기 위한 이더리움 바이트코드로 변환되며, 상기 컴파일러는 상기 코드 생성부에 의해 생성된 코드를 컴파일하여 이더리움 바이트코드를 생성하고, 이더리움 바이트코드를 코드 실행부에 제공하며, 상기 코드 실행부는 상기 컴파일부에 의해 생성된 이더리움 바이트코드를 실행하여 증거에 대한 검증을 수행하고, 이더리움 바이트코드를 옵코드로 분리한 후 스택에 저장하며, 상기 스택에는 상기 코드 실행부에 의해 이더리움 바이트코드가 실행되는 과정에서 이더리움 바이트코드에서 분리된 옵코드가 저장되며, 상기 검증자 단말이 증명자 단말에 복수의 문제를 제시하면, 상기 증명자 단말은 재귀 영지식 증명을 이용하여 상기 복수의 문제 중 첫 번째 문제(Question 1)에 해당하는 증거 1(Proof 1)을 생성하고, 복수의 문제 중 두 번째 문제(Question 2)와 상기 증거 1(Proof 1)을 이용하여 증거 2(Proof 2)를 생성하고, 복수의 문제 중 최종 세 번째 문제(Question 3)와 상기 증거 2(Proof 2)를 이용하여 최종 세 번 째 문제(Question 3)에 대한 최종 증거 3(Proof 3)을 생성하고, 상기 증명자 단말은 첫 번째 문제(Question 1)에 해당하는 증거 1(Proof 1)을 이용하여 최종 세 번 째 문제(Question 3)에 해당하는 최종 증거 3(Proof 3)을 생성하여 상기 복수의 문제들에 대한 각각의 증거들을 제출하지 않고 증거 1, 2, 3을 제외한 상기 최종 증거 3(Proof 3)만을 상기 검증자 단말에 제출하며, 상기 검증자 단말은 상기 최종 증거 3(Proof 3)만을 검증하여 상기 최종 증거 3(Proof 3) 및 최종 증거 3(Proof 3)과 연관된 나머지 증거 1, 2, 3의 정당성을 증명하는 것을 특징으로 한다.According to a preferred embodiment of the present invention, a plurality of nodes that share information on a blockchain that shares a distributed database and hold a private key and a public key, but when a transaction is requested from any one of the plurality of nodes, At least one of the plurality of nodes checks whether the value encrypted and stored in each note is within a preset valid range, and whether the sum of the values of the input note and the sum of the values of the output note are the same in a state where the value is encrypted. a receiver that checks whether or not the value is confirmed, deletes the input note stored in a note registry, and newly stores the output note, and any one of the plurality of nodes receives a user input; Among the plurality of items used in the transaction, some items requiring encryption are determined according to the user's input, and a smart contract is constructed so that the partial items are encrypted using an elliptic curve encryption method, and zero-knowledge Proof is performed to perform a transaction using the smart contract, and a plurality of result values obtained as a result of the transaction are stored, and a predetermined hash algorithm is used for some of the public keys of nodes joined to a specific group. A group secret key having the same number of bits as the secret key is generated at a predetermined period from the synthesized bit string by performing a predetermined bit operation on each series of bit strings, one or more processors distributing the group secret key to nodes joined to the specific group; and a memory in which at least one command executed by the processor is stored, and when any one of the plurality of nodes is subscribed to the specific group, the processor controls the addition or withdrawal of a node from the specific group. When a change occurs, the group private key is newly generated based on the public key of a node joined to the specific group after the change occurs, and distributed to nodes joined to the specific group after the change occurs, and the plurality of The node 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, and the general operation verification circuit and zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) a circuit generator for verifying a general operation that generates a proof key and a verification key using an algorithm; a prover terminal generating evidence using a proof key including the circuit for verifying the general operation, coefficients of polynomial functions obtained through the zk-SNARK algorithm, and information necessary for verification and proof among the circuits for verifying the general operation; and a verifier terminal that verifies whether the evidence is valid using a verification key including the circuit for verifying the general operation, information necessary for verification and verification in the circuit for verifying the general operation, and the evidence. The circuit generator for verification of operation includes a circuit generation module for generating a circuit for verification of general operation that operates in any program having the number of reference instructions, the number of reference machine steps, and the size of a reference system; General operation verification including a zk-SNARK key generation module that generates a proof key and a verification key using security parameters and the circuit generated by the circuit generation module after receiving key generator information, prover information, and verifier information In a transaction execution device for implementing a zero-knowledge proof circuit-based virtual machine for general operation verification, if the transaction execution device for implementing the zero-knowledge proof circuit-based virtual machine for general operation verification performs verification of evidence without executing a transaction, A storage unit, a code generation unit, a compiler, a stack, and a code execution unit are further included to check whether a corresponding transaction is a correct transaction, wherein the storage unit stores evidence generated by the prover terminal 300, and the code generation unit The evidence stored in the storage unit generates code coded in Solidity language, and the code generated by the code generation unit is compiled by the compiler and converted into Ethereum bytecode for operation in a virtual machine, and the compiler The code generated by the code generation unit is compiled to generate Ethereum bytecode, the Ethereum bytecode is provided to the code execution unit, and the code execution unit executes the Ethereum bytecode generated by the compilation unit. After verifying the evidence, the Ethereum bytecode is separated into opcodes and stored in the stack. The code is stored, and when the verifier terminal presents a plurality of problems to the prover terminal, the prover terminal uses recursive zero-knowledge proof to obtain evidence 1 corresponding to the first problem (Question 1) among the plurality of problems. (Proof 1) is generated, Proof 2 (Proof 2) is created using the second question (Question 2) and the evidence 1 (Proof 1) among the plurality of questions, and the third final question (Question 1) is generated. 3) and Proof 2 above for the third question (Question 3). Final proof 3 (Proof 3) is generated, and the prover terminal uses proof 1 (Proof 1) corresponding to the first problem (Question 1) to obtain final proof 3 corresponding to the third final problem (Question 3) (Proof 3) is not submitted for each of the plurality of problems, but only the final proof 3 (Proof 3) excluding proofs 1, 2, and 3 is submitted to the verifier terminal, and the verifier terminal is characterized by proving the legitimacy of the final proof 3 and the remaining proofs 1, 2, and 3 related to the final proof 3 by verifying only the final proof 3.

본 발명의 다른 일 실시예에 따르면, 상기 적어도 하나의 명령은, 인증장치로부터 사용자의 인증정보 및 상기 인증장치의 고유값을 포함하는 트랜잭션을 수신하도록 실행되고, 상기 인증정보를 기초로 상기 스마트 컨트랙트에 저장된 사용자의 토큰을 결정하도록 실행되고, 상기 토큰의 유효성 정보, 상기 토큰의 소유권 정보 및 상기 트랜잭션을 기초로 사용자를 인증하고, 상기 토큰의 유효성 정보를 기초로 상기 토큰이 유효한지를 결정하도록 실행되는 것을 특징으로 한다.According to another embodiment of the present invention, the at least one command is executed to receive a transaction including authentication information of a user and a unique value of the authentication device from an authentication device, and based on the authentication information, the smart contract to determine a user's token stored in , authenticate a user based on validity information of the token, ownership information of the token and the transaction, and determine whether the token is valid based on the validity information of the token. characterized by

본 발명의 또 다른 일 실시예에 따르면, 상기 거래가 경매인 경우, 상기 스마트 컨트랙트에 설정되는 거래조건은 거래시작시각과 거래진행시간을 포함하고, 상기 스마트 컨트랙트에 의해 실행되는 거래는 설정된 거래시작시간에 거래가 시작되고 설정된 거래진행시간 경과후 거래가 종료되는 것을 특징으로 한다.According to another embodiment of the present invention, when the transaction is an auction, the transaction conditions set in the smart contract include a transaction start time and a transaction progress time, and the transaction executed by the smart contract is the set transaction start time It is characterized in that the transaction starts at , and the transaction ends after the set transaction progress time has elapsed.

본 발명의 또 다른 일 실시예에 따르면, 상기 스마트 컨트랙트가 실행하는 거래는 구매자가 동일한 경매에 대하여 두 번째로 입찰 시도시 입찰이 중지되는 것을 특징으로 한다.According to another embodiment of the present invention, the transaction executed by the smart contract is characterized in that the bidding is stopped when the buyer attempts to bid for the same auction for the second time.

본 발명의 또 다른 일 실시예에 따르면, 상기 복수의 노드 중에서 적어도 하나의 제1 노드가 특정 노드들의 식별정보 및 트랜잭션 정보를 포함하는 적어도 하나의 트랜잭션을 생성하고, 상기 복수의 노드 중에서 적어도 하나의 제2 노드가 상기 식별정보 및 상기 트랜잭션 정보에 기반하여 블록 헤더와 블록 바디가 모두 포함되는 적어도 하나의 메인 블록을 생성하고, 상기 복수의 노드 중에서 적어도 하나의 제2 노드가 상기 식별정보 및 상기 트랜잭션 정보에 기반하여 블록의 헤더만 포함되는 적어도 하나의 서브 블록을 생성하고, 상기 적어도 하나의 제2 노드가 생성된 상기 적어도 하나의 메인 블록 또는 상기 서브 블록을 상기 식별정보에 기반하여 상기 특정 노드들과 상기 특정 노드를 제외한 나머지 노드들에게 차별적으로 공유하는 것을 특징으로 한다.According to another embodiment of the present invention, at least one first node among the plurality of nodes generates at least one transaction including identification information and transaction information of specific nodes, and at least one of the plurality of nodes A second node generates at least one main block including both a block header and a block body based on the identification information and the transaction information, and at least one second node among the plurality of nodes generates the identification information and the transaction information. Based on the information, at least one sub-block including only the header of the block is generated, and the at least one main block or the sub-block in which the at least one second node is generated is transferred to the specific nodes based on the identification information. And it is characterized in that it is differentially shared with the rest of the nodes except for the specific node.

본 발명의 또 다른 일 실시예에 따르면, 상기 프로세서는 상기 메모리에 포함된 컴퓨터 판독 가능한 명령을 실행하도록 구성되고, 사용자와의 데이터 프라이버시 관련 계약을 수행하고, 상기 데이터 프라이버시 관련 계약에 따라 사용자의 개인정보에 해당되는 사용자 데이터에 접근하고자 하는 서비스와의 계약을 이용하여 상기 서비스로 상기 사용자 데이터를 전달하는 것을 특징으로 한다.According to another embodiment of the present invention, the processor is configured to execute computer readable instructions contained in the memory, perform a data privacy-related agreement with a user, and perform a data privacy-related agreement with a user according to the data privacy-related agreement. It is characterized in that the user data is delivered to the service by using a contract with a service to access user data corresponding to information.

본 발명의 또 다른 일 실시예에 따르면, 상기 프로세서는 공개 블록체인과 비공개 블록체인을 각각 독립적으로 생성하고, 공개 데이터를 상기 공개 블록체인의 공개 블록에 저장하고, 비공개 데이터를 상기 비공개 블록체인의 비공개 블록에 저장하고, 상기 공개 블록체인의 공개 블록 생성시 상기 비공개 블록체인의 비공개 블록을 동시에 생성하며, 상기 공개 블록의 헤더에 동시에 생성된 비공개 블록의 해쉬값 및 이전 공개 블록의 해쉬값을 기록하고, 상기 비공개 블록체인의 비공개 블록 생성시 해당 비공개 블록의 헤더에 이전 비공개 블록의 해쉬값을 기록하는 것을 특징으로 한다.According to another embodiment of the present invention, the processor independently creates a public blockchain and a private blockchain, stores public data in a public block of the public blockchain, and stores private data in a public block of the private blockchain. Store in a private block, simultaneously create a private block of the private blockchain when creating a public block of the public blockchain, and record the hash value of the simultaneously created private block and the hash value of the previous public block in the header of the public block And, when creating a private block of the private blockchain, the hash value of the previous private block is recorded in the header of the corresponding private block.

본 발명의 또 다른 일 실시예에 따르면, 상기 프로세서는 상기 스마트 컨트랙트에 대한 정보를 획득하고 데이터베이스로부터 하나 이상의 시뮬레이션 거래정보를 획득하고, 상기 시뮬레이션 거래정보를 상기 스마트 컨트랙트의 거래조건에 대입한 결과를 획득하고, 획득한 결과와 상기 시뮬레이션 거래정보를 비교하고, 획득된 결과와 상기 시뮬레이션 거래정보의 비교결과에 기초하여 상기 스마트 컨트랙트의 무결성을 검증하는 것을 특징으로 한다.According to another embodiment of the present invention, the processor obtains information about the smart contract, obtains one or more simulation transaction information from a database, and assigns the simulation transaction information to the transaction conditions of the smart contract. Acquiring, comparing the obtained result with the simulation transaction information, and verifying the integrity of the smart contract based on the comparison result between the obtained result and the simulation transaction information.

본 발명의 또 다른 일 실시예에 따르면, 상기 서킷 생성 모듈(210)은 수학식 1을 이용하여 일반연산 검증용 서킷을 생성하는 것을 특징으로 하는 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치.According to another embodiment of the present invention, the circuit generation module 210 implements a virtual machine based on a zero-knowledge proof circuit for general operation verification, characterized in that it generates a circuit for general operation verification using Equation 1. transaction execution device to do so.

[수학식 1][Equation 1]

C =

Figure 112020114347725-pat00001
C =
Figure 112020114347725-pat00001

C: 서킷C: Circuit

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

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

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

본 발명의 또 다른 일 실시예에 따르면, 상기 증명자 단말(300)은 상기 일반연산 검증용 서킷 생성기(200)에서 생성된 증명 키를 이용하여 증거를 생성하되, 수학식 2를 이용하여 증거를 생성하며, 수학식 2를 통해 다항함수의 계수를 계산하고, 상기 다항함수의 계수, QAP의 증거, 공개키를 이용하여 증거를 생성하며, 상기 검증자 단말(400)은 검증 키의 일부 및 검증과 증명에 필요한 정보를 이용하여 수학식 3을 산출하고, 검증 키 및 수학식 3의 결과 값을 이용하여 12개의 페어링을 계산하고 필요한 점검을 수행하며, 수학식 3의 산출 과정에서 가변 기반 다중 스칼라 곱셈 기법을 사용하여 수학식 3의 계산 결과인 의 계산에 필요한 연산량을 줄일 수 있는 것을 특징으로 한다.According to another embodiment of the present invention, the prover terminal 300 generates evidence using the proof key generated by the general operation verification circuit generator 200, but uses Equation 2 to generate the evidence. generate, calculate the coefficient of the polynomial function through Equation 2, generate the proof using the coefficient of the polynomial function, the proof of the QAP, and the public key, and the verifier terminal 400 uses a part of the verification key and verification Equation 3 is calculated using the information necessary for proof and Equation 3 is calculated, 12 pairings are calculated using the result value of Equation 3 and the verification key, and necessary checks are performed. It is characterized in that the amount of calculation required for the calculation of , which is the calculation result of Equation 3, can be reduced by using the multiplication technique.

[수학식 2][Equation 2]

Figure 112020114347725-pat00003
Figure 112020114347725-pat00003

Figure 112020114347725-pat00004
: QAP 인스턴스인
Figure 112020114347725-pat00005
와 QAP의 증거
Figure 112020114347725-pat00006
에서 파생
Figure 112020114347725-pat00004
: QAP instance
Figure 112020114347725-pat00005
and evidence of QAP
Figure 112020114347725-pat00006
derived from

[수학식 3][Equation 3]

Figure 112020114347725-pat00007
Figure 112020114347725-pat00007

vk: 검증 키,vk: verification key,

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

C: 서킷C: Circuit

본 발명에 따르면, 스마트 컨트랙트 및 영지식 증명을 이용함으로써, 범용적으로 이용할 수 있는 블록체인을 통해 일반 거래가 가능하다.According to the present invention, by using smart contracts and zero-knowledge proof, general transactions are possible through a universally usable block chain.

또한, 본 발명에 따르면, 블록체인에 올라가는 데이터를 장부로 한정하지 않고 스마트 컨트랙트로 넓히고 일부를 암호화하고 암호화한 것을 영지식 증명을 통해 증명하여 거래가 이루어질 수 있도록 하여, 스마트 컨트랙트를 만드는 사람이 원하는 부분을 선택적으로 암호화하도록 함으로써, 범용적으로 이용하는 것이 가능하다.In addition, according to the present invention, the data uploaded to the blockchain is not limited to a ledger, but is expanded to a smart contract, part of it is encrypted, and the encrypted part is proved through zero-knowledge proof so that a transaction can be made, so that the person who makes the smart contract wants By selectively encrypting, it is possible to use it universally.

또한, 본 발명에 따르면, 트랜잭션 서명에 비밀키와 그룹 비밀키를 함께 사용하기 때문에, 비밀키가 해킹되었다고 하더라도 그룹 비밀키의 서명을 요청하는 구성을 통해 해킹으로 인한 피해를 방지할 수 있다.In addition, according to the present invention, since a private key and a group private key are used together to sign a transaction, even if the private key is hacked, damage due to hacking can be prevented by requesting a signature of the group private key.

또한 일반연산 검증이 가능하다는 장점이 있으며, 또한 본 발명에 의하면, 사전에 정의된 형태의 트랜잭션뿐만 아니라, 사용자가 원하는 다양한 형태의 트랜잭션에도 영지식 증명을 활용 수 있다는 장점이 있다.In addition, there is an advantage that general operation verification is possible, and according to the present invention, there is an advantage that zero-knowledge proof can be used for various types of transactions desired by users as well as predefined types of transactions.

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

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

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

도 1은 본 발명의 일 실시예에 따른 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 블록체인 상에서 거래를 수행하는 과정을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 복수의 노드의 블록도이다.
도 4는 본 발명의 다른 실시예에 따른 블록체인 상에서 거래를 수행하는 과정을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 노드의 블록체인의 블록도이다.
도 1은 본 발명의 일 실시예에 따른 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 내부 구조를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 일반 연산 검증용 서킷 생성기의 내부 구조를 설명하기 위한 블록도이다.
도 3은 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 방법의 일 실시예를 설명하기 위한 흐름도이다.
도 4는 본 발명에 따른 일반 연산 검증용 영지식 증명 서킷 생성 과정을 설명하기 위한 예시도이다.
1 is a block diagram of a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations according to an embodiment of the present invention.
2 is a diagram illustrating a process of performing a transaction on a blockchain according to an embodiment of the present invention.
3 is a block diagram of a plurality of nodes according to an embodiment of the present invention.
4 is a diagram illustrating a process of performing a transaction on a blockchain according to another embodiment of the present invention.
5 is a block diagram of a block chain of nodes according to an embodiment of the present invention.
1 is a block diagram for explaining the internal structure of a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations according to an embodiment of the present invention.
2 is a block diagram for explaining the internal structure of a circuit generator for verifying general operations 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 verifying general operations according to the present invention.
4 is an exemplary diagram for explaining a process of generating a zero-knowledge proof circuit for verifying general operations according to the present invention.

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

도 1은 본 발명의 일 실시예에 따른 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 블록도이다.1 is a block diagram of a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations according to an embodiment of the present invention.

도 1을 참조하면,일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치는 통신망을 통해 서로 통신 가능한 복수의 노드(100)로 구성될 수 있으며, 복수의 노드(100)는 분산 데이터베이스(database)를 공유하는 블록체인(block chain) 상에서 정보를 공유할 수 있다. 복수의 노드(100)는 비밀키와 공개키를 보유할 수 있다.Referring to FIG. 1, a transaction execution apparatus for implementing a virtual machine based on a zero-knowledge proof circuit for general operation verification may be composed of a plurality of nodes 100 capable of communicating with each other through a communication network, and the plurality of nodes 100 Information can be shared on a block chain that shares a distributed database. A plurality of nodes 100 may have a private key and a public key.

먼저, 블록체인에 대해 설명하기로 한다. 블록체인이란 블록에 데이터를 담아 체인 형태로 연결하고, 수많은 컴퓨터에 동시에 이를 복제하여 저장하는 분산형 데이터 저장기술로서 공공거래장부라고 부른다.First, we will explain the blockchain. Blockchain is a distributed data storage technology that puts data in blocks, connects them in the form of a chain, and replicates and stores them on numerous computers at the same time, called a public ledger.

중앙 집중형 서버에 거래기록을 보관하지 않고 거래에 참여하는 모든 사용자에게 거래내역을 보내주며, 거래때마다 모든 거래 참여자들이 정보를 공유하고 이를 대조하여 데이터 위조나 변조를 할 수 없도록 되어 있다.Transaction records are sent to all users participating in transactions without storing transaction records in a centralized server, and all transaction participants share and compare information for each transaction to prevent forgery or alteration of data.

블록체인은 중앙 집중형 서버에 거래 기록을 보관하거나 관리하지 않고 거래에 참여하는 개개인의 서버들이 모여 네트워크를 유지 및 관리하는데, 이 개개인의 서버, 즉 참여자를 노드라고 한다.Blockchain does not store or manage transaction records in a centralized server, but rather maintains and manages a network where individual servers participating in transactions gather, and these individual servers, or participants, are called nodes.

중앙 관리자가 없기 때문에 블록을 배포하는 노드의 역할이 중요하며, 참여하는 노드들 가운데 절반 이상의 동의가 있어야만 새 블록이 생성된다. 노드들은 블록체인을 컴퓨터에 저장해 놓고 있는데, 일부 노드가 해킹을 당해 기존 내용에 오류가 발생해도 다수의 노드에 데이터가 남아 있어 계속적으로 데이터를 보존할 수 있다.Since there is no central manager, the role of the node distributing the block is important, and a new block is created only when more than half of the participating nodes agree. The nodes store the blockchain in their computers, and even if some nodes are hacked and errors occur in the existing contents, the data remains in the majority of nodes, so the data can be continuously preserved.

본 발명의 일 실시예에서는, 복수의 노드(100)를 참여자로 하여 블록체인을 구현하고 있으며, 복수의 노드(100)는 제1 노드(110), 제2 노드(120), 제3 노드(130), 제4 노드(140), 제5 노드(150), 제6 노드(160)를 포함하고 있으며, 복수의 노드(100) 각각은 단말 형태로 구현될 수 있고, 서버 형태로 구현될 수도 있다. 본 발명의 일 실시예에서는 편의상 복수의 노드(100)를 6개의 노드로 예로 들어 도시하였으나, 이에 한정되지는 않는다.In one embodiment of the present invention, a blockchain is implemented with a plurality of nodes 100 as participants, and the plurality of nodes 100 include a first node 110, a second node 120, and a third node ( 130), the fourth node 140, the fifth node 150, and the sixth node 160, and each of the plurality of nodes 100 may be implemented in the form of a terminal or in the form of a server. there is. In one embodiment of the present invention, for convenience, the plurality of nodes 100 are illustrated as 6 nodes, but the present invention is not limited thereto.

또한, 본 발명의 일 실시예에서는, 익명 거래를 범용 목적의 블록체인 위에서도 가능하게 하는 프로토콜을 제공하여, 복수의 노드(100)는 거래를 수행할 수 있다.In addition, in one embodiment of the present invention, a plurality of nodes 100 can perform transactions by providing a protocol that enables anonymous transactions even on a general-purpose blockchain.

한편, 복수의 노드(100) 중에서 적어도 하나의 제1 노드(110)가 특정 노드들의 식별정보 및 트랜잭션 정보를 포함하는 적어도 하나의 트랜잭션을 생성할 수 있으며, 복수의 노드(100) 중에서 적어도 하나의 제2 노드가 식별정보 및 트랜잭션 정보에 기반하여 블록 헤더와 블록 바디가 모두 포함되는 적어도 하나의 메인 블록을 생성할 수 있다.Meanwhile, at least one first node 110 among the plurality of nodes 100 may generate at least one transaction including identification information and transaction information of specific nodes, and at least one of the plurality of nodes 100 The second node may generate at least one main block including both a block header and a block body based on the identification information and the transaction information.

또한, 복수의 노드(100) 중에서 적어도 하나의 제2 노드가 식별정보 및 트랜잭션 정보에 기반하여 블록의 헤더만 포함되는 적어도 하나의 서브 블록을 생성하고, 적어도 하나의 제2 노드가 생성된 적어도 하나의 메인 블록 또는 서브 블록을 식별정보에 기반하여 특정 노드들과 특정 노드를 제외한 나머지 노드들에게 차별적으로 공유할 수 있다.In addition, at least one second node among the plurality of nodes 100 generates at least one sub-block including only the header of the block based on the identification information and the transaction information, and at least one second node is generated. Based on the identification information, the main block or sub-block of can be differentially shared with other nodes excluding specific nodes and specific nodes.

이와 같이, 사전에 미리 그룹을 지정하지 않고 블록에 포함된 식별정보를 통해 블록과 관련된 특정 노드들에게 트랜잭션이 포함된 블록을 공유시키고 블록과 관련없는 나머지 노드들에게 블록 헤더만 포함된 서브 블록을 자동으로 공유시킬 수 있다.In this way, without designating a group in advance, the block containing the transaction is shared to specific nodes related to the block through the identification information included in the block, and the sub-block containing only the block header is distributed to the remaining nodes unrelated to the block. can be shared automatically.

도 2는 본 발명의 일 실시예에 따른 블록체인 상에서 거래를 수행하는 과정을 도시한 도면이다.2 is a diagram illustrating a process of performing a transaction on a blockchain according to an embodiment of the present invention.

먼저, 모든 노트(note)들은 노트 등록소에 저장될 수 있으며, 각 노트는 그에 해당하는 가치(value)와 누가 소유하고 있는지를 암호화하여 저장할 수 있다.First, all notes may be stored in a note registry, and each note may encrypt and store a corresponding value and who owns it.

도 2를 참조하면, 거래가 일어날 때, 블록체인 상에서 복수의 노드(100) 중 어느 하나에서 거래가 요청되면, 범위 증명 단계(S210)에서, 복수의 노드(100) 중 적어도 하나는, 각 노트에 암호화하여 저장된 가치가 미리 설정된 유효 범위 내에 포함되는지 여부를 확인할 수 있다. 즉, 각 노트의 가치가 유효한 범위에 있는지 확인할 수 있다.Referring to FIG. 2, when a transaction occurs, if a transaction is requested from any one of the plurality of nodes 100 on the block chain, in the range proof step (S210), at least one of the plurality of nodes 100 encrypts each note. It is possible to check whether the stored value is within the preset validity range. That is, you can check whether the value of each note is in a valid range.

합분 거래 단계(S220)에서, 복수의 노드(100) 중 적어도 하나는, 가치가 암호화된 상태에서 입력 노트의 가치 합과 출력 노트의 가치 합이 동일한지 여부를 확인할 수 있다. 즉, 입력 노트의 가치 합과 출력 노트의 가치합이 같은지 확인할 수 있다.In the sum transaction step ( S220 ), at least one of the plurality of nodes 100 may check whether the sum of the values of the input notes and the sum of the values of the output notes are the same in a state in which the values are encrypted. That is, it can be checked whether the sum of the values of the input notes and the sum of the values of the output notes are the same.

결과 저장 단계(S230)에서, 복수의 노드(100) 중 적어도 하나는, 가치가 확인되면, 노트 등록소에 저장된 입력노트를 삭제하고, 출력 노트를 새로 저장할 수 있다. 즉, 범위 증명과 합분 거래가 모두 확인되면, 노트 등록소의 입력 노트들을 지우고 출력 노트를 만들어 등록할 수 있다.In the result storage step S230, at least one of the plurality of nodes 100 may delete the input note stored in the note registry and newly store the output note when the value is confirmed. That is, when both the range proof and sum transaction are confirmed, the input notes in the note registry can be deleted and the output notes can be created and registered.

도 3은 본 발명의 일 실시예에 따른 복수의 노드의 블록도이다.3 is a block diagram of a plurality of nodes according to an embodiment of the present invention.

도 3을 참조하면, 복수의 노드(100) 각각은 리시버(111), 실질적인 연산을 수행하는 프로세서(112) 및 메모리(113)를 포함할 수 있다. 도 3에서는 대표적으로 제1 노드(110)를 구성하는 것으로 도시하였다.Referring to FIG. 3 , each of the plurality of nodes 100 may include a receiver 111 , a processor 112 that performs actual calculations, and a memory 113 . In FIG. 3, the first node 110 is representatively illustrated.

리시버(111)는 사용자 입력을 수신한다.The receiver 111 receives user input.

프로세서(112)는 메모리(113)에 저장된 프로그램 명령(program command)을 실행할 수 있다. 프로세서(112)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU) 또는 본 발명의 일 실시예에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리(113)는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있다. 예를 들어, 메모리(113)는 읽기 전용 메모리(read only memory, ROM) 및/또는 랜덤 액세스 메모리(random access memory, RAM)로 구성될 수 있다.The processor 112 may execute program commands stored in the memory 113 . The processor 112 may mean a central processing unit (CPU), a graphics processing unit (GPU), or a dedicated processor on which methods according to an embodiment of the present invention are performed. The memory 113 may be composed of volatile storage media and/or non-volatile storage media. For example, the memory 113 may include read only memory (ROM) and/or random access memory (RAM).

메모리(113)는 프로세서(112)를 통해 실행디는 적어도 하나의 명령이 저장된다. 여기서, 프로세서(112)는 메모리(113)에 포함된 컴퓨터 판독 가능한 명령을 실행하도록 구성되고, 사용자와의 데이터 프라이버시 관련 계약을 수행하고, 데이터 프라이버시 관련 계약에 따라 사용자의 개인정보에 해당되는 사용자 데이터에 접근하고자 하는 서비스와의 계약을 이용하여 서비스로 사용자 데이터를 전달할 수 있다.The memory 113 stores at least one instruction executed through the processor 112 . Here, the processor 112 is configured to execute computer readable instructions contained in the memory 113, perform a data privacy-related agreement with the user, and user data corresponding to the user's personal information according to the data privacy-related agreement. You can pass user data to the service by using a contract with the service you want to access.

이와 같이, 데이터 기반 4차 산업 등 데이터 생태계 활성화와 개인의 프라이버시 보호에 대한 요구 사이에 최적의 균형점을 제공할 수 있다.In this way, it is possible to provide an optimal balance between the vitalization of the data ecosystem, such as the data-based 4th industry, and the demand for personal privacy protection.

한편, 메모리(113)에 저장되는 적어도 하나의 명령은, 인증장치로부터 사용자의 인증정보 및 인증장치의 고유값을 포함하는 트랜잭션을 수신하도록 실행되고, 인증정보를 기초로 스마트 컨트랙트에 저장된 사용자의 토큰을 결정하도록 실행되고, 토큰의 유효성 정보, 토큰의 소유권 정보 및 트랜잭션을 기초로 사용자를 인증하고, 토큰의 유효성 정보를 기초로 토큰이 유효한지를 결정하도록 실행된다.On the other hand, at least one command stored in the memory 113 is executed to receive a transaction including user authentication information and a unique value of the authentication device from the authentication device, and the user's token stored in the smart contract based on the authentication information and authenticate the user based on the validity information of the token, the ownership information of the token and the transaction, and determine whether the token is valid based on the validity information of the token.

이와 같이, 대체 불가능한 토큰을 이용하여 사용자 인증을 수행하여 높은 보안성을 제공할 수 있다.In this way, it is possible to provide high security by performing user authentication using a non-fungible token.

도 4는 본 발명의 다른 실시예에 따른 블록체인 상에서 거래를 수행하는 과정을 도시한 도면이다.4 is a diagram illustrating a process of performing a transaction on a blockchain according to another embodiment of the present invention.

도 4를 참조하면, 암호화 항목 결정 단계(S410)에서, 거래에 이용되는 복수개의 항목 중 암호화가 요구되는 일부 항목이 리시버를 통한 사용자의 입력에 따라 결정되면, 프로세서는 암호화 항목을 결정할 수 있다.Referring to FIG. 4 , in the step of determining encryption items (S410), when some items requiring encryption among a plurality of items used in a transaction are determined according to a user's input through the receiver, the processor may determine encryption items.

이후, 스마트 컨트랙트 구성 단계(S420)에서, 프로세서는 타원 곡선 암호 방식을 이용하여 암호화 항목으로 결정된 일부 항목이 암호화되도록 스마트 컨트랙트를 구성할 수 있다. 스마트 컨트랙트에서 일부 암호화하는 항목을 암호화할 때 타원 곡선 암호 방식을 이용하여 결과값에 대한 연산을 수행하여 추가적인 거래를 수행할 수 있다. 타원 곡선 암호 방식과 관련한 사항은 공개특허 제10-2008-0055378호를 참조하기로 한다.Then, in the smart contract configuration step (S420), the processor may configure a smart contract so that some items determined as encryption items are encrypted using an elliptic curve cryptography method. When encrypting some encrypted items in a smart contract, additional transactions can be performed by performing calculations on the resulting values using elliptic curve cryptography. For details related to the elliptic curve cryptography method, refer to Patent Publication No. 10-2008-0055378.

이후, 영지식 증명 단계(S430)에서, 프로세서는 암호화된 일부 항목에 대해 영지식 증명을 통해 증명을 수행할 수 있다.Then, in the zero-knowledge proof step (S430), the processor may perform proof through zero-knowledge proof for some encrypted items.

이후, 거래 수행 단계(S440)에서, 프로세서는 스마트 컨트랙트를 이용한 제1 거래를 수행할 수 있다.Then, in the transaction execution step (S440), the processor may perform a first transaction using a smart contract.

이후, 결과 저장 단계(S450)에서, 프로세서는 제1 거래의 수행 결과 획득된 복수의 결과값을 저장할 수 있다.Then, in the result storage step (S450), the processor may store a plurality of result values obtained as a result of performing the first transaction.

이후, 프로세서는 복수의 결과값에 대해서 연산을 수행하여 갱신된 결과값을 획득할 수 있으며, S440 단계를 다시 수행하여, 갱신된 결과값을 이용하여 스마트 컨트랙트를 이용한 제2 거래를 수행할 수 있다.Thereafter, the processor may perform an operation on a plurality of result values to obtain an updated result value, and perform step S440 again to perform a second transaction using the smart contract using the updated result value. .

여기서, 전술한 스마트 컨트랙트(Smart Contract)와 관련하여 간략히 살펴보기로 한다. 스마트 컨트랙트란 스마트 계약 시스템에 거래 조건과 내용을 등록하면 그에 해당되는 법률 및 절차 등이 자동으로 적용되어 거래 당사자에게 결과가 전달된다. 따라서, 거래 절차가 간소화되고 거래상 발생되는 비용도 절감될 뿐만 아니라, 거래 당사자 간에 안전한 계약이 이뤄질 수 있다.Here, we will briefly review the above-mentioned smart contract. A smart contract is when the transaction conditions and details are registered in the smart contract system, the applicable laws and procedures are automatically applied and the results are delivered to the transaction parties. Accordingly, transaction procedures are simplified, costs incurred in transactions are reduced, and a safe contract can be established between transaction parties.

예를 들어, 보험회사와 병원은 스마트 계약을 통해 환자 의무기록은 보호하면서 보험료를 자동 지급함으로써 지급 결제 시스템을 간소화하고, 위변조가 어려운 원장을 만들어 보험 사기를 방지할 수 있으며, 스마트 계약을 지원하는 대표적인 플랫폼으로 이더리움(ethereum)이 있다.For example, insurance companies and hospitals can simplify payment and settlement systems by automatically paying insurance premiums while protecting patient medical records through smart contracts, prevent insurance fraud by creating a ledger that is difficult to falsify, and support smart contracts. A representative platform is Ethereum.

또한, 거래가 경매인 경우, 스마트 컨트랙트에 설정되는 거래조건은 거래시작시각과 거래진행시간을 포함하고, 스마트 컨트랙트에 의해 실행되는 거래는 설정된 거래시작시간에 거래가 시작되고 설정된 거래진행시간 경과후 거래가 종료된다. 이와 같이 거래시작시각과 거래진행시간 내에서 거래가 이루어지도록 하는 것은 24시간의 거래시간이 필요없기 때문이다.In addition, if the transaction is an auction, the transaction conditions set in the smart contract include the transaction start time and transaction progress time, and the transaction executed by the smart contract starts at the set transaction start time and ends after the set transaction progress time. do. In this way, the reason why the transaction is made within the transaction start time and the transaction execution time is that the 24-hour transaction time is not necessary.

이때, 스마트 컨트랙트가 실행하는 거래는 구매자가 동일한 경매에 대하여 두 번째로 입찰 시도시 입찰이 중지되도록 할 수 있다. 이는 동일한 구매자에게 두 번의 입찰을 허용하지 않기 위해서이다.At this time, the transaction executed by the smart contract can cause bidding to be stopped if the buyer attempts to bid for the same auction a second time. This is to avoid allowing the same buyer to bid twice.

한편, 프로세서는 스마트 컨트랙트에 대한 정보를 획득하고 데이터베이스로부터 하나 이상의 시뮬레이션 거래정보를 획득하고, 시뮬레이션 거래정보를 스마트 컨트랙트의 거래조건에 대입한 결과를 획득하고, 획득한 결과와 시뮬레이션 거래정보를 비교하고, 획득된 결과와 시뮬레이션 거래정보의 비교결과에 기초하여 스마트 컨트랙트의 무결성을 검증할 수 있다.On the other hand, the processor obtains information about the smart contract, obtains one or more simulation transaction information from the database, obtains a result of substituting the simulation transaction information into the transaction conditions of the smart contract, compares the obtained result with the simulation transaction information, , the integrity of the smart contract can be verified based on the obtained result and the comparison result of the simulation transaction information.

또 한편, 프로세서가 그룹 비밀키를 생성하는 과정은 후술하는 바와 같다.Meanwhile, a process of generating a group secret key by a processor will be described later.

프로세서는 자신의 그룹 안의 노드들이 트랜잭션 서명 시 비밀키와 더불어, 이중적으로 서명에 사용될 수 있는 그룹 비밀키를 생성할 수 있다. 프로세서는 자신의 그룹 안의 노드와 공유하고, 그룹 비밀키의 서명 검증에 사용될 그룹 공개키를 다른 그룹에 배포할 수 있다.A processor can generate a group secret key that can be used for dual signature, together with a secret key when nodes in its own group sign a transaction. A processor can share with nodes in its own group and distribute the group public key to other groups to be used for signature verification of the group private key.

프로세서는 그룹 내 각 노드를 식별하는 인덱스 정보 및 각 노드의 공개키 정보를 매핑하여 저장할 수 있다. 예를 들어, 프로세서가 100개의 노드를 관리하는 경우, 100개 노드의 인덱스 정보 1~100과 각각의 공개키를 매핑하여 저장할 수 있다.The processor may map and store index information identifying each node in the group and public key information of each node. For example, when a processor manages 100 nodes, index information 1 to 100 of 100 nodes and each public key may be mapped and stored.

우선, 프로세서는 그룹 비밀키를 생성하기 위해, 노드의 공개키 중 일부를 선정할 수 있다. 프로세서는 랜덤하게 인덱스 정보 1, 3, 25, 99에 매핑된 공개키를 선정할 수 있고, 또는 아래 예시의 방법을 사용할 수 있다.First, the processor may select some of the node's public keys to generate a group secret key. The processor may randomly select a public key mapped to index information 1, 3, 25, and 99, or may use the method of the example below.

예를 들어, 프로세서는 그룹 내의 노드의 총 수를 소정의 자연수로 나눈 몫의 배수에 해당하는 인덱스를 가진 공개키를 선정할 수 있다. 가령, 노드의 총 수가 100개인 경우, 랜덤한 자연수 7로 나눈 몫인 14의 배수인 14, 28, 42, 56, 50, 84, 98의 인덱스와 매핑된 공개키를 선정할 수 있다.For example, the processor may select a public key having an index corresponding to a multiple of the quotient of the total number of nodes in the group divided by a predetermined natural number. For example, if the total number of nodes is 100, a public key mapped with an index of 14, 28, 42, 56, 50, 84, or 98, which is a multiple of 14, which is a quotient divided by a random natural number of 7, can be selected.

다음으로, 프로세서는 선정된 각 공개키를 비트로만 이루어진 비트 정보가 출력되도록 소정의 해쉬 생성 알고리즘을 통하여 변환할 수 있다. 가령 각 공개키에 base58 decoding을 적용하여 160 비트로 이루어진 비트열을 추출할 수 있다.Next, the processor may convert each selected public key through a predetermined hash generation algorithm so that bit information consisting only of bits is output. For example, a bit string consisting of 160 bits can be extracted by applying base58 decoding to each public key.

이후, 프로세서는 각각의 비트열에 비트 연산(bitwise operation, 예를 들어, ^, &, >>, << 또는 이들의 조합)을 수행하여 하나의 합성된 비트열을 생성할 수 있다.Thereafter, the processor may generate one synthesized bit sequence by performing a bitwise operation (eg, ^, &, >>, << or a combination thereof) on each bit sequence.

이후, 프로세서는 합성된 비트열에 시간 정보로 이루어진 비트열을 연결하여 그룹 비밀키를 생성할 수 있다. 이때 시간 정보 비트열은 UNIX TIME을 사용할 수 있다. 프로세서는 그룹 비밀키의 비트수가 비밀키의 비트수와 같도록 하기 위해, 시간 정보의 비트열에 임의의 비트열을 연결할 수 있다.Thereafter, the processor may generate a group secret key by connecting a bit string composed of time information to the synthesized bit string. At this time, UNIX TIME can be used for the time information bit string. The processor may connect an arbitrary bit string to the bit string of time information so that the number of bits of the group secret key is equal to the number of bits of the secret key.

예를 들어, 256 비트의 그룹 비밀키를 만들기 위해, 합성된 비트열이 160 비트일 때, 96비트를 연결해야 하므로, 시간 정보 비트열을 Currnet Time(32bit) x sysrandom(64bit)로 구성할 수 있다. 다만, 이는 예시일 뿐 그룹 비밀키 생성 방법이 이러한 예시에 한정되는 것은 아니다.For example, to create a 256-bit group secret key, when the synthesized bit string is 160 bits, 96 bits must be connected, so the time information bit string can be configured as Currnet Time (32bit) x sysrandom (64bit). there is. However, this is only an example, and the method for generating a group secret key is not limited to this example.

프로세서는 하나의 그룹 비밀키가 지속적으로 사용될 경우, 악의적인 공격에 의해 그룹 비밀키가 노출될 우려를 방지하기 위해, 소정의 주기로 그룹 비밀키를 새롭게 생성할 수 있다. 또한, 프로세서는 그룹에 변경(예: 노드의 추가 또는 탈퇴)이 발생할 경우에 그룹 비밀키를 새롭게 생성하여 그룹 내의 노드에 배포할 수 있다. 즉, 복수의 노드 중 어느 하나가 특정 그룹에 가입되어 있을 때, 프로세서는, 특정 그룹에 노드의 추가 또는 탈퇴를 포함하는 변경이 발생할 경우, 변경이 일어난 후 특정 그룹에 가입된 노드의 공개키를 기초로 그룹 비밀키를 새롭게 생성하여 변경이 일어난 후 특정 그룹에 가입된 노드에 배포할 수 있다.When one group secret key is continuously used, the processor may newly generate a group secret key at predetermined intervals in order to prevent a risk of exposure of the group secret key by a malicious attack. In addition, when a change (eg, addition or withdrawal of a node) occurs in a group, the processor may newly generate a group secret key and distribute it to nodes within the group. That is, when any one of a plurality of nodes is subscribed to a specific group, when a change including addition or withdrawal of a node from the specific group occurs, the processor retrieves the public key of the node joined to the specific group after the change occurs. Based on this, a group secret key can be newly generated and distributed to nodes joined to a specific group after a change has occurred.

그룹 비밀키의 생성 주기는, 예를 들어 5~60초일 수 있으나, 이러한 수치는 예시일 뿐 한정하는 것은 아니다.The generation period of the group secret key may be, for example, 5 to 60 seconds, but these figures are examples only and are not limiting.

프로세서는 그룹 비밀키로부터 소정의 함수를 통해 그룹 공개키를 생성할 수 있다. 소정의 함수는 그룹 비밀키를 기초로는 그룹 공개키를 생성할 수 있으나, 제1 그룹 공개키를 기초로는 그룹 비밀키를 만들 수 없는 비가역함수로서, 예를 들면, 타원곡선곱셈 함수(Elliptic Curve Digital Signature Algorithm, ECDSA)를 포함할 수 있으나, 이에 한정되지는 않는다.The processor may generate a group public key from the group private key through a predetermined function. The predetermined function is an irreversible function that can generate a group public key based on the group private key, but cannot create a group private key based on the first group public key. For example, an elliptic curve multiplication function (Elliptic Curve Digital Signature Algorithm, ECDSA), but is not limited thereto.

또 한편, 프로세서는 공개 블록체인과 비공개 블록체인을 각각 독립적으로 생성하고, 공개 데이터를 공개 블록체인의 공개 블록에 저장하고, 비공개 데이터를 상기 비공개 블록체인의 비공개 블록에 저장할 수 있다.Meanwhile, the processor may independently create a public blockchain and a private blockchain, store public data in a public block of the public blockchain, and store private data in a private block of the private blockchain.

또 한편, 프로세서는 공개 블록체인의 공개 블록 생성시 비공개 블록체인의 비공개 블록을 동시에 생성하며, 공개 블록의 헤더에 동시에 생성된 비공개 블록의 해쉬값 및 이전 공개 블록의 해쉬값을 기록하고, 비공개 블록체인의 비공개 블록 생성시 해당 비공개 블록의 헤더에 이전 비공개 블록의 해쉬값을 기록할 수 있다.On the other hand, when the public block of the public block is created, the processor simultaneously creates the private block of the private block, records the hash value of the simultaneously created private block and the hash value of the previous public block in the header of the public block, and records the hash value of the private block. When creating a private block on the chain, the hash value of the previous private block can be recorded in the header of the private block.

이와 같이, 공개 블록체인과 비공개 블록체인으로 이루어지는 다계층의 블록체인을 운영하며 비공개 블록체인에 중요 데이터를 저장하여 중요 데이터에 대한 보안을 강화할 수 있다.In this way, it is possible to enhance the security of important data by operating a multi-layered blockchain consisting of a public blockchain and a private blockchain and storing important data in the private blockchain.

도 5는 본 발명의 일 실시예에 따른 노드의 블록체인의 블록도이다.5 is a block diagram of a block chain of nodes according to an embodiment of the present invention.

도 5를 참조하면, 공개 블록들이 이어진 공개 블록체인(510)과 비공개 블록들이 이어진 비공개 블록체인(520)으로 구성되는 다계층의 블록체인을 운용 및 저장한다. 공개 블록체인(510)에는 각종 트랜잭션이 저장되고, 비공개 블록체인(520)에는 사용자들의 가입 정보와 사용자들의 개인키, 콘텐츠 암호화키 등의 외부에 노출되어서는 안 되는 중요 데이터, 즉 비공개 데이터가 저장된다.Referring to FIG. 5, a multi-layered blockchain composed of a public blockchain 510 connected by public blocks and a private blockchain 520 connected by private blocks is operated and stored. Various transactions are stored in the public blockchain 510, and important data that should not be exposed to the outside, such as users' subscription information, users' private keys, and content encryption keys, that is, private data is stored in the private blockchain 520. do.

비공개 블록체인(520)을 구성하는 비공개 블록은 랜덤 암호화 키로 암호화된다. 그리고, 랜덤 암호화 키는 이노코인 블록체인 네트워크를 구성하는 노드들 중에서 일반 노드들을 제외한 대표노드들(110)에만 여러 조각으로 분할되어 분산 저장된다. 공개 블록체인(510)에 저장되는 각종 트랜잭션은 예를 들어 코인의 송금, 사용자들의 공개키 그리고 지갑 주소 등을 포함할 수 있다. 공개 블록체인(510)과 비공개 블록체인(520)에 적용되는 블록 생성 기술(예, 작업증명 또는 지분증명, 해쉬 연산)은 공지된 블록체인 기술이 적용될 수 있다.Private blocks constituting the private blockchain 520 are encrypted with a random encryption key. In addition, the random encryption key is divided into several pieces and distributedly stored only in representative nodes 110, excluding general nodes, among the nodes constituting the Innocoin blockchain network. Various transactions stored in the public blockchain 510 may include, for example, coin remittance, users' public keys, and wallet addresses. Block generation technology (eg, proof-of-work or proof-of-stake, hash operation) applied to the public blockchain 510 and the private blockchain 520 may be a known blockchain technology.

블록체인(510, 520)의 블록은 헤더(header)와 바디(body)로 구성된다. 헤더에는 이전 블록의 해쉬값, 난이도, 넌스(Nonce), 타임 스탬프, 머클 루트(Merkle Root)가 기록되고, 바디에는 각종 트랜잭션 정보와 블록의 인덱스가 기록된다. 여기서 블록의 인덱스는 비공개 블록의 인덱스를 포함한다. 즉, 비공개 블록에 특정 중요 데이터를 저장하는 트랜잭션이 발생하였을 때, 그 트랜잭션의 정보는 공개 블록의 바디에 기록되면서, 그 트랜잭션에 대응하는 중요 데이터가 기록된 비공개 블록에 대한 인덱스가 공개 블록의 바디에 기록된다.Blocks of the blockchains 510 and 520 are composed of a header and a body. The hash value, difficulty, nonce, time stamp, and Merkle Root of the previous block are recorded in the header, and various transaction information and block indexes are recorded in the body. Here, the index of the block includes the index of the private block. That is, when a transaction to store specific important data in a private block occurs, the information of the transaction is recorded in the body of the public block, and the index for the private block in which the important data corresponding to the transaction is recorded is stored in the body of the public block. is recorded in

따라서, 특정 중요 데이터에 대한 검색이 요구될 때, 인덱스를 참조하여 해당 특정 중요 데이터를 저장하고 있는 비공개 블록을 찾을 수 있다. 공개 블록체인(510)을 구성하는 공개 블록이 생성될 때, 비공개 블록체인(520)을 구성하는 비공개 블록도 동시에 생성된다. 그리고, 공개 블록의 헤더에는 이전 블록의 해쉬값과 함께, 공개 블록과 함께 동시에 생성된 비공개 블록의 해쉬값이 기록된다. 이렇게 해서, 비공개 블록에 대한 위변조를 방지할 수 있다. 당연히 비공개 블록의 헤더에는 이전 비공개 블록의 해쉬값이 기록된다.Accordingly, when a search for specific important data is requested, a private block storing the specific important data can be found by referring to the index. When a public block constituting the public blockchain 510 is created, a private block constituting the private blockchain 520 is also created at the same time. In addition, the hash value of the previous block and the hash value of the private block created simultaneously with the public block are recorded in the header of the public block. In this way, forgery and falsification of private blocks can be prevented. Naturally, the hash value of the previous private block is recorded in the header of the private block.

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

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

도 6은 본 발명의 일 실시예에 따른 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 내부 구조를 설명하기 위한 블록도이다. 도 7는 본 발명의 일 실시예에 따른 일반연산 검증용 서킷 생성기의 내부 구조를 설명하기 위한 블록도이다.6 is a block diagram for explaining the internal structure of a transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for general operation verification according to an embodiment of the present invention. 7 is a block diagram for explaining the internal structure of a circuit generator for verifying general operations according to an embodiment of the present invention.

도 6을 참조하면, 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 복수의 노드(100)는 일반연산 검증용 서킷 생성기(200), 증명자 단말(300) 및 검증자 단말(400)을 포함한다.Referring to FIG. 6 , a plurality of nodes 100 of a transaction execution apparatus for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations include a circuit generator 200 for verifying general operations, a prover terminal 300, and a verifier. A user terminal 400 is included.

일반연산 검증용 서킷 생성기(200)은 일반연산 검증용 서킷을 생성하는 장치이다. 이러한 일반연산 검증용 서킷 생성기(200)은 도 7와 같이 서킷 생성 모듈(210) 및 zk-SNARK 키 생성 모듈(220)을 포함한다.The circuit generator 200 for verifying general arithmetic operations is a device that generates circuits for verifying general arithmetic operations. The circuit generator 200 for verifying the general operation includes a circuit generator module 210 and a zk-SNARK key generator module 220 as shown in FIG. 7 .

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

일 실시예에서, 서킷 생성 모듈(210)은 하기의 [수학식 1]을 만족하는 일반연산 검증용 서킷을 생성한다. 즉, 일반연산 검증용 서킷 생성기(200)은 이하의 명령어, T 이하의 머신 스텝, n 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷을 생성할 수 있다.In one embodiment, the circuit generation module 210 generates a circuit for verifying general operations that satisfies the following [Equation 1]. That is, the circuit generator 200 for verifying general operations can generate a circuit that operates in any program having the following commands, T or less machine steps, and size n or less.

[수학식 1][Equation 1]

C =

Figure 112020114347725-pat00008
C =
Figure 112020114347725-pat00008

C: 서킷C: Circuit

Figure 112020114347725-pat00009
: 기준 명령어의 개수,
Figure 112020114347725-pat00009
: the number of reference commands,

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

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

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

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

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

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

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

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

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

보다 구체적으로, zk-SNARK 키 생성 모듈(220)은 검증 규칙을 R1CS(rank-1 constraint system) 형식으로 변환한 후, R1CS를 QAP(Quadratic Arithmetic Program)로 변환한다. 이때, 검증 규칙은 입력 금액이 출력 금액보다 큰지, 트랜잭션이 적절한 서명이 있는지 또는 입력이 UTXO에 속하는지 여부 등에 관한 것이다. More specifically, the zk-SNARK key generation module 220 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 rule relates 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 키 생성 모듈(220)은 랜덤 엘리먼트

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

여기에서,

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

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

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

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

Figure 112020114347725-pat00017
)를 생성할 수 있고, 어느 검증자 단말(400)이 검증 키(vk)를 이용하여 증거(
Figure 112020114347725-pat00018
)를 검증할 수 있는 것이다.Therefore, once generated, any prover terminal 300 uses the proof key pk to prove (
Figure 112020114347725-pat00017
) can be generated, and any verifier terminal 400 uses the verification key vk to evidence (
Figure 112020114347725-pat00018
) can be verified.

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

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

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

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

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

Figure 112020114347725-pat00022
)를 생성할 수 있다. In one embodiment, the prover terminal 300 refers to the following [Equation 2] as evidence (
Figure 112020114347725-pat00022
) can be created.

[수학식 2][Equation 2]

Figure 112020114347725-pat00023
Figure 112020114347725-pat00023

Figure 112020114347725-pat00024
: QAP 인스턴스인
Figure 112020114347725-pat00025
와 QAP의 증거
Figure 112020114347725-pat00026
에서 파생
Figure 112020114347725-pat00024
: QAP instance
Figure 112020114347725-pat00025
and evidence of QAP
Figure 112020114347725-pat00026
derived from

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

Figure 112020114347725-pat00027
), QAP의 증거 (
Figure 112020114347725-pat00028
) 및 공개키 (
Figure 112020114347725-pat00029
) 를 이용해서 증거(
Figure 112020114347725-pat00030
)를 생성할 수 있다. That is, the prover terminal 300 calculates the coefficient through [Equation 2] (
Figure 112020114347725-pat00027
), evidence of QAP (
Figure 112020114347725-pat00028
) and public key (
Figure 112020114347725-pat00029
) using the evidence (
Figure 112020114347725-pat00030
) can be created.

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

Figure 112020114347725-pat00031
) 및 증거(
Figure 112020114347725-pat00032
)를 수신하면 증거(
Figure 112020114347725-pat00033
)가 유효한지 검증하는 역할을 수행한다. The verifier terminal 400 includes a verification key (vk), information necessary for verification and verification (
Figure 112020114347725-pat00031
) and evidence (
Figure 112020114347725-pat00032
) upon receipt of evidence (
Figure 112020114347725-pat00033
) plays a role in verifying whether it is valid.

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

Figure 112020114347725-pat00034
) 를 이용하여 [수학식 3]을 산출하고, 검증 키(vk) 및 [수학식 3]의 결과 값을 이용하여 12개의 페어링을 계산하고 필요한 점검을 수행한다.First, the verifier terminal 400 includes a part of the verification key vk and information necessary for verification and verification (
Figure 112020114347725-pat00034
) is used to calculate [Equation 3], and 12 pairings are calculated using the verification key (vk) and the resulting value of [Equation 3], and necessary checks are performed.

[수학식 3][Equation 3]

Figure 112020114347725-pat00035
Figure 112020114347725-pat00035

vk: 검증 키,vk: verification key,

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

C: 서킷C: Circuit

[수학식 3]의 산출 과정에서 가변 기반 다중 스칼라 곱셈 기법을 사용하여 [수학식 3]의 계산 결과인

Figure 112020114347725-pat00036
의 계산에 필요한 연산 량을 줄일 수 있고, 페어링 평가에는 입력 크기 n과 무관하게 일정한 시간이 걸리더라도, 이러한 평가는 매우 비싸고 작은 서킷에 대해 지배적이다.In the process of calculating [Equation 3], the variable-based multi-scalar multiplication technique is used to calculate the result of [Equation 3].
Figure 112020114347725-pat00036
can reduce the amount of computation required for the computation of , and even though pairing evaluation takes constant time independent of the input size n, such evaluation is very expensive and dominates for small circuits.

일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에는 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 확인한다. 이때, 가상 머신의 옵코드 실행 모듈에는 일반 연산 검증이 가능한 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있는 것이다. In a transaction execution device for realizing a virtual machine based on a zero-knowledge proof circuit for general operation verification, when verification of evidence is performed, it is confirmed that the corresponding transaction is a correct transaction. At this time, since the zero-knowledge proof technology capable of verifying general operations is applied to the opcode execution module of the virtual machine, it is possible to know whether the corresponding transaction is a correct transaction by performing verification of the zero-knowledge evidence even if the transaction is not executed.

이를 위한 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치는 코드 생성부, 컴파일러, 저장부, 스택 및 코드 실행부를 포함한다.A transaction execution device for realizing a virtual machine based on a zero-knowledge proof circuit for general operation verification for this purpose includes a code generation unit, a compiler, a storage unit, a stack, and a code execution unit.

코드 생성부는 저장부에는 저장된 영지식 증거를 솔리디터 언어로 코딩된 코드를 생성한다. 이때, 솔리디터는 사람이 이해하기 위해 만들어진 언어이기 때문에 가상머신에서 동작하기 위해서는 가상머신이 이해할 수 있는 기계어로 변경 필요하다. 따라서, 코드 생성부에 의해 생성된 코드는 컴파일러에 의해 컴파일되어 가상머신에서 동작하기 위한 이더리움 바이트코드로 변환된다.The code generation unit generates code coded in the Solidity language for the zero-knowledge evidence stored in the storage unit. At this time, since Solidity is a language made for humans to understand, it is necessary to change it to a machine language that the virtual machine can understand in order to operate in the 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 determine whether the transaction is correct. That is, since zero-knowledge proof technology is applied to the virtual machine according to an embodiment of the present invention, it is possible to know whether a corresponding transaction is a correct transaction through verification of the zero-knowledge proof even if the transaction is not executed.

스택에는 코드 실행부에 의해 이더리움 바이트코드가 실행되는 과정에서 이더리움 바이트코드에서 분리된 옵코드가 저장된다. In the stack, opcodes separated from the Ethereum bytecode are 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 the 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.

본 발명은 코드 실행부에 영지식 증명 기술이 적용됨으로써 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있다. In the present invention, zero-knowledge proof technology is applied to the code execution unit, so that even if a transaction is not executed, it is possible to know whether a corresponding transaction is a correct transaction by performing verification on the zero-knowledge evidence.

상기와 같이 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치의 옵코드 실행 모듈에 일반 연산 검증이 가능한 영지식 증명 기술이 적용되면 스토리지 모듈에 저장되는 데이터 중 TX 데이터가 영지식 증명으로 대체된다. 따라서, 본 발명은 가상 머신의 옵코드 실행 모듈에는 일반 연산 검증이 가능한 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 알 수 있는 것이다. As described above, if the zero-knowledge proof technology capable of verifying general operations is applied to the opcode execution module of the transaction execution device to implement the zero-knowledge proof circuit-based virtual machine for general operation verification, TX data among the data stored in the storage module is zero. Replaced by Proof of Knowledge. Therefore, since the zero-knowledge proof technology capable of verifying general operations is applied to the opcode execution module of the virtual machine according to the present invention, it is possible to know whether a corresponding transaction is a correct transaction by performing verification of the zero-knowledge proof even without executing a transaction. There is.

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

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

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

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

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

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

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

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

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

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

이때, 일반연산 검증용 서킷 생성기(200)은 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 상기 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성할 수 있다.At this time, the circuit generator 200 for general operation verification may generate a polynomial function by converting the 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. .

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

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

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

도 9를 참조하면, 주어진 증거 한 개(a single proof)의 정당성을 증명하는 것은 그것과 연관된 다른 증거(many proofs)들의 정당성을 증명하는 것이다. 예를 들어, 검증자가 증명자에게 제시한 5가지 문제를 증명자가 올바르게 해결했는지 확인하는 시나리오를 참조하여 설명하기로 한다.Referring to FIG. 9 , proving the legitimacy of a given proof (a single proof) means proving the legitimacy of many proofs related thereto. As an example, it will be explained with reference to a scenario in which the prover checks whether the prover has correctly solved the five problems presented to the prover.

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

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

이를 도 9b를 참고하여 상세히 설명하면, 상기 검증자 단말(400)이 증명자 단말(300)에 복수의 문제를 제시하면, 상기 증명자 단말(300)은 재귀 영지식 증명을 이용하여 상기 복수의 문제 중 첫 번째 문제(Question 1)에 해당하는 증거 1(Proof 1)을 생성하고, 복수의 문제 중 두 번째 문제(Question 2)와 상기 증거 1(Proof 1)을 이용하여 증거 2(Proof 2)를 생성하고, 복수의 문제 중 최종 세 번째 문제(Question 3)와 상기 증거 2(Proof 2)를 이용하여 최종 세 번 째 문제(Question 3)에 대한 최종 증거 3(Proof 3)을 생성하고, This will be described in detail with reference to FIG. 9B. When the verifier terminal 400 presents a plurality of problems to the prover terminal 300, the prover terminal 300 uses recursive zero-knowledge proof to solve the plurality of problems. Proof 1 (Proof 1) corresponding to the first question (Question 1) is generated, and proof 2 (Proof 2) is generated by using the second question (Question 2) and the proof 1 (Proof 1) among multiple questions. Create a final proof 3 (Proof 3) for the third final problem (Question 3) using the third final problem (Question 3) and the evidence 2 (Proof 2) among the plurality of problems,

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

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

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

100 : 노드 110 : 제1 노드
111 : 리시버 112 : 프로세서
113 : 메모리 120 : 제2 노드
130 : 제3 노드 140 : 제4 노드
150 : 제5 노드 160 : 제6 노드
200 : 일반연산 검증용 서킷 생성기 210 : 서킷 생성 모듈
220 : zk-SNARK 키 생성 모듈
300 : 증명자 단말
400 : 검증자 단말
510 : 공개 블록체인 520 : 비공개 블록체인
100: node 110: first node
111: receiver 112: processor
113: memory 120: second node
130: third node 140: fourth node
150: fifth node 160: sixth node
200: circuit generator for general operation verification 210: circuit generation module
220: zk-SNARK key generation module
300: prover terminal
400: verifier terminal
510: public blockchain 520: private blockchain

Claims (3)

일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치에 있어서,
복수의 노드(100);를 포함하고,
상기 복수의 노드(100) 중 어느 하나가 특정 그룹에 가입되어 있을 때, 상기 특정 그룹에 노드의 추가 또는 탈퇴를 포함하는 변경이 발생할 경우, 상기 특정 그룹의 공개키를 기초로 변경된 그룹의 그룹 비밀키를 새롭게 생성하여 변경이 일어난 후 특정 그룹에 가입된 노드에 배포하는 프로세서(112); 및
상기 프로세서(112)를 통해 실행되는 적어도 하나의 명령이 저장된 메모리(113);를 포함하고,
상기 복수의 노드(100)는 적어도 하나의 제1 노드(110) 및 적어도 하나의 제2 노드(120)를 포함하며,
상기 제1 노드(110)는
특정 노드들의 식별정보 및 트랜잭션 정보를 포함하는 적어도 하나의 트랜잭션을 생성하고,
상기 제2 노드(120)는
식별정보 및 트랜잭션 정보에 기반하여 블록 헤더와 블록 바디가 모두 포함되는 적어도 하나의 메인 블록(M)을 생성하고, 식별정보 및 트랜잭션 정보에 기반하여 블록 헤더만 포함되는 적어도 하나의 서브 블록(S)을 생성하고, 상기 적어도 하나의 메인 블록(M) 또는 적어도 하나의 서브 블록(S)을 식별정보에 기반하여 특정 노드들에게 트랙잭션이 포함된 메인블록(M) 또는 서브 블록(S)을 공유시키고, 상기 특정 노드를 제외한 나머지 노드들에게 블록 헤더만 포함된 서브 블록(S)을 공유하는 것을 특징으로 하는
일반 연산 검증용 영지식 증명 서킷 시반 가상머신을 구현하기 위한 거래 수행장치.
A transaction execution device for implementing a virtual machine based on a zero-knowledge proof circuit for verifying general operations,
A plurality of nodes 100; including,
When any one of the plurality of nodes 100 is subscribed to a specific group and a change including adding or leaving a node in the specific group occurs, the group secret of the group changed based on the public key of the specific group. A processor 112 for generating a new key and distributing it to nodes joined to a specific group after a change has occurred; and
A memory 113 storing at least one command executed by the processor 112; includes,
The plurality of nodes 100 include at least one first node 110 and at least one second node 120,
The first node 110 is
generating at least one transaction including identification information and transaction information of specific nodes;
The second node 120 is
At least one main block (M) including both a block header and a block body is generated based on the identification information and transaction information, and at least one sub block (S) including only a block header is generated based on the identification information and transaction information Generates, and shares the main block (M) or sub-block (S) including the transaction with specific nodes based on the identification information of the at least one main block (M) or at least one sub-block (S) , characterized in that the sub-block (S) including only the block header is shared with the remaining nodes except for the specific node
A transaction execution device to implement a zero-knowledge proof circuit for general operation verification.
제 1 항에 있어서,
상기 프로세서(112)는
공개 블록체인과 비공개 블록체인을 각각 독립적으로 생성하고, 공개 데이터를 상기 공개 블록체인의 공개 블록에 저장하고, 비공개 데이터를 상기 비공개 블록체인의 비공개 블록에 저장하고,
상기 공개 블록체인의 공개 블록 생성시 상기 비공개 블록체인의 비공개 블록을 동시에 생성하며, 상기 공개 블록의 헤더에 동시에 생성된 비공개 블록의 해쉬값 및 이전 공개 블록의 해쉬값을 기록하고, 상기 비공개 블록체인의 비공개 블록 생성시 해당 비공개 블록의 헤더에 이전 비공개 블록의 해쉬값을 기록하는 것을 특징으로 하는
일반 연산 검증용 영지식 증명 서킷 시반 가상머신을 구현하기 위한 거래 수행장치.
According to claim 1,
The processor 112 is
independently create a public blockchain and a private blockchain, store public data in a public block of the public blockchain, and store private data in a private block of the private blockchain;
When a public block of the public block chain is created, a private block of the private block chain is simultaneously created, and the hash value of the simultaneously created private block and the hash value of the previous public block are recorded in the header of the public block. When creating a private block, the hash value of the previous private block is recorded in the header of the private block.
A transaction execution device to implement a zero-knowledge proof circuit for general operation verification.
제 2 항에 있어서,
상기 프로세서(112)는
스마트 컨트랙트에 대한 정보를 획득하고 데이터베이스로부터 하나 이상의 시뮬레이션 거래정보를 획득하고,
상기 시뮬레이션 거래정보를 상기 스마트 컨트랙트의 거래조건에 대입한 결과를 획득하고,
획득한 결과와 상기 시뮬레이션 거래정보를 비교하고,
획득된 결과와 상기 시뮬레이션 거래정보의 비교결과에 기초하여 상기 스마트 컨트랙트의 무결성을 검증하는 것을 특징으로 하는
일반 연산 검증용 영지식 증명 서킷 시반 가상머신을 구현하기 위한 거래 수행장치.
According to claim 2,
The processor 112 is
Acquiring information about the smart contract and obtaining one or more simulation transaction information from the database;
obtaining a result of substituting the simulation transaction information into the transaction conditions of the smart contract;
Compare the obtained result with the simulation transaction information,
Characterized in that the integrity of the smart contract is verified based on the obtained result and the comparison result of the simulation transaction information
A transaction execution device to implement a zero-knowledge proof circuit for general operation verification.
KR1020200140719A 2020-10-27 2020-10-27 Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification KR102494873B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200140719A KR102494873B1 (en) 2020-10-27 2020-10-27 Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200140719A KR102494873B1 (en) 2020-10-27 2020-10-27 Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification

Publications (2)

Publication Number Publication Date
KR20220056036A KR20220056036A (en) 2022-05-04
KR102494873B1 true KR102494873B1 (en) 2023-02-06

Family

ID=81583762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200140719A KR102494873B1 (en) 2020-10-27 2020-10-27 Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification

Country Status (1)

Country Link
KR (1) KR102494873B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024054899A1 (en) * 2022-09-07 2024-03-14 Xixventures, Llc Peer-to-peer selectable digital money system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102074381B1 (en) * 2019-04-15 2020-02-06 팀블랙버드 주식회사 Method, device and recording medium for processing confidential transaction based on blockchain
KR102128476B1 (en) * 2018-03-19 2020-06-30 상명대학교 천안산학협력단 System and method for trading power based on blockchain smart contract
KR102120703B1 (en) * 2018-07-27 2020-08-05 박기업 Apparatus for managing group of nodes which comprises transaction of dual signature based on group key on blockchain network and computing apparatus

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102130651B1 (en) * 2018-08-13 2020-07-06 포항공과대학교 산학협력단 Method and apparatus for authenticating user based on blockchain

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102128476B1 (en) * 2018-03-19 2020-06-30 상명대학교 천안산학협력단 System and method for trading power based on blockchain smart contract
KR102120703B1 (en) * 2018-07-27 2020-08-05 박기업 Apparatus for managing group of nodes which comprises transaction of dual signature based on group key on blockchain network and computing apparatus
KR102074381B1 (en) * 2019-04-15 2020-02-06 팀블랙버드 주식회사 Method, device and recording medium for processing confidential transaction based on blockchain

Also Published As

Publication number Publication date
KR20220056036A (en) 2022-05-04

Similar Documents

Publication Publication Date Title
US11842317B2 (en) Blockchain-based authentication and authorization
JP6841911B2 (en) Information protection systems and methods
US11743052B2 (en) Platform for generating authenticated data objects
US20240095728A1 (en) Blockchain system for confidential and anonymous smart contracts
US11341487B2 (en) System and method for information protection
TWI770307B (en) Systems and methods for ensuring correct execution of computer program using a mediator computer system
KR20200096790A (en) System and method for authenticating off-chain data based on proof verification
US10700850B2 (en) System and method for information protection
US20210049600A1 (en) Digital Asset Delivery Network
JP6756041B2 (en) Information protection systems and methods
EP3834156A1 (en) Systems and methods for blockchain addresses and owner verification
JP2020509680A (en) How to sign new blocks in a decentralized blockchain consensus network
KR102074381B1 (en) Method, device and recording medium for processing confidential transaction based on blockchain
CN112801778A (en) Federated bad asset blockchain
Xie et al. Accountable outsourcing data storage atop blockchain
CN111049806B (en) Joint authority control method and device, electronic equipment and storage medium
David et al. FAST: fair auctions via secret transactions
Xue et al. Blockchain-based fair and fine-grained data trading with privacy preservation
KR102494873B1 (en) Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification
Mishra et al. VaccineChain: A checkpoint assisted scalable blockchain based secure vaccine supply chain with selective revocation
US20230419274A1 (en) Fully Collateralized Automated Market Maker
US20230419285A1 (en) NFT Enforcement Control System
US20230412393A1 (en) Multisignature Custody of Digital Assets
US20230318833A1 (en) Systems and methods for managing tokens
TW202402009A (en) Proof of ownership

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant