KR102519490B1 - 영지식 증명 기반 블록체인 가상머신의 검증방법 - Google Patents
영지식 증명 기반 블록체인 가상머신의 검증방법 Download PDFInfo
- Publication number
- KR102519490B1 KR102519490B1 KR1020210153150A KR20210153150A KR102519490B1 KR 102519490 B1 KR102519490 B1 KR 102519490B1 KR 1020210153150 A KR1020210153150 A KR 1020210153150A KR 20210153150 A KR20210153150 A KR 20210153150A KR 102519490 B1 KR102519490 B1 KR 102519490B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtual machine
- verification
- zero
- verifying
- knowledge proof
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 91
- 238000012795 verification Methods 0.000 claims abstract description 132
- 238000012360 testing method Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 8
- 230000000694 effects Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 241000270295 Serpentes Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/26—Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 영지식 증명 기반 블록체인 가상머신의 검증방법을 개시한다. 보다 상세하게는, 본 발명은 영지식 증명을 적용함으로써 블록체인 참여자가 블록의 내용을 알지 못하더라도 블록의 내용이 위, 변조되지 않았음을 빠르게 검증할 수 있는 블록체인 가상머신에 대한 검증방법에 관한 것이다.
본 발명의 실시예에 따르면, 블록체인 네트워크에서 모든 트랜잭션에 대한 검증을 대체하여 빠른 속도로 검증절차를 완료할 수 있는 영지식 증명이 적용된 가상머신을 검증할 수 있는 효과가 있다.
본 발명의 실시예에 따르면, 블록체인 네트워크에서 모든 트랜잭션에 대한 검증을 대체하여 빠른 속도로 검증절차를 완료할 수 있는 영지식 증명이 적용된 가상머신을 검증할 수 있는 효과가 있다.
Description
본 발명은 영지식 증명 기반 블록체인 가상머신에 관한 것으로, 특히 영지식 증명을 적용함으로써 블록체인 참여자가 블록의 내용을 알지 못하더라도 블록의 내용이 위, 변조되지 않았음을 빠르게 검증할 수 있는 블록체인 가상머신에 대한 검증방법에 관한 것이다.
블록체인은 P2P(Peer to Peer) 네트워크에서 신뢰할 수 있는 제3자(Trusted Third Parity)의 개입 없이 거래 내역들의 무결성을 확보하고 참여자들이 내역들을 공유하는 분산형 디지털 장부를 의미한다.
블록체인을 응용한 대표적인 사례는 비트코인(Bitcoin) 및 이더리움(Ethereum) 등과 같은 암호화폐이다. 이더리움은 이더리움 가상머신(Ethereum Virtual Machine; EVM)을 도입한 후, EVM을 통해 사용자들은 사전 정의된 일련의 작업을 수행하기보다 사용자가 원하는 방식에 맞게 직접 프로그래밍을 할 수 있다.
이러한 EVM은 공지의 JVM(Java Virtual Machine)과 유사한 계산 및 스토리지의 추상화를 제공한다. JVM의 경우 기본 호스트 OS 또는 하드웨어에 구속받지 않고 런타임 환경을 제공하도록 설계됨에 따라 다양한 시스템에서 호환이 가능하도록 하는 것을 목적으로 하며, JAVA, Scala 같은 고급 프로그래밍 언어를 가상머신의 바이트코드 명령어 집합으로 컴파일할 수 있다. EVM 또한 솔리디티, Serpent) 등과 같은 고급 스마트 컨트랙트 프로그램이 언어가 컴파일되어 생성된 자체 바이트코드 명령어 집합을 질행할 수 있다.
그러나, EVM은 JVM(Java Virtual Machine)과 같은 기존 가상머신에 비해 효율이 매우 떨어지고, 또한 복잡한 어플리케이션 환경을 지원하기 어렵다는 문제점이 있다.
지난 10년간 수많은 블록체인 구현체들이 등장했지만, 트랜잭션을 누적시켜 저장한다는 측면에서 별다른 혁신이 일어나지 않았고, 이럴 경우 모든 트랜잭션 내용을 검증해야 함에 따라 확장성에 한계가 존재한다.
이에, 종래 비트코인과 같이 UXTO로 만들어진 단순한 형태의 블록체인에서 일부 트랜잭션을 처리하는 경우에만 제한적으로 적용되는 영지식 증명(Zero Knowledge Proof)을 이더리움과 같은 상태 트리(State Tree)를 다루는 복잡한 형태의 블록체인에도 적용하고자 하는 연구가 진행 에 있다.
전술한 영지식 증명(Zero Knowledge Proof)은 암호학에서 누군가가 상대방에게 어떤 상태가 참이라는 것을 증명할 때, 그 문장의 참 거짓 여부를 제외한 어떤 것도 노출되지 않도록 하는 방법을 가리킨다. 영지식 증명을 활용한 프로토콜의 가장 큰 특징은 정보를 제3자에게 공개하지 않고 정보의 '유효성'을 증명할 수 있다는 장점이 있다.
블록체인 플랫폼에서 영지식 증명은 다음과 같은 방식으로 적용될 수 있다. 먼저 데이터의 해시값인 커밋(commit)을 블록체인 네트워크에 기록한다. 이때, 약정값의 계산은 일반적으로 랜덤값을 더한 입력값을 사용하여 계산함에 따라 약정값으로부터 원 입력값을 구하는 것은 매우 어려우며, 이에 따라 블록체인에 올라가 있는 데이터에 의해서는 개인 정보가 노출되지 않는다. 따라서, 영지식 증명을 활용하는 경우 온체인 블록체인은 데이터의 약정값을 올리는 장소로 사용되게 된다. 실제 데이터는 오프체인에 저장되어 있으며, 데이터의 활용을 위해서 영지식 증명이 사용된다.
그리고, 원래 데이터와 약정값 사이의 관계식 및 데이터에 대한 특정식을 포함하는 함수를 작성하고, 이 함수에 대해서 증명을 만들어서 제3 자에게 제공하게 되면 제3 자는 증명과 입출력 결과를 검증하고, 입력 중 하나인 약정값이 블록체인에 있다는 것을 확인함으로써 옳은 데이터에 대한 증명임을 확인할 수 있게 된다.
즉, 블록체인에 프라이버시를 제공한다는 것은 온체인 블록체인에 약정된 값이 올라가고 영지식을 사용하여 오프체인에서 데이터를 활용하는 방식이라고 할 수 있다. 따라서, 공개된 온체인 블록체인에서는 원 데이터가 노출되지 않기 때문에 프라이버시 문제가 해결되게 된다.
본 발명은 검증 시스템에 관한 것으로, 특히 EVM과 유사한 아키텍처를 가지며 영지식 증명 기술이 적용된 블록체인 가상머신을 제시하고, 그 성능을 검증할 수 있는 영지식 증명 기반 블록체인 가상머신 검증 시스템을 제공하는 데 과제가 있다.
전술한 과제를 해결하기 위해, 본 발명의 바람직한 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증방법은, 스마트 컨트랙트를 컴파일하는 인터프리터 및 연산기를 탑재한 영지식 증명 기반 블록체인 가상머신을 검증하는 방법으로서, 상기 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계, 상기 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계, 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 상기 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 상기 가상머신에 입력하여 테스트 연산을 수행하는 단계 및, 상기 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계를 포함할 수 있다.
상기 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계는, 스택의 top변수를 초기화하는 단계, 둘 이상의 옵코드 형식의 검증 데이터를 POP 메소드 및 PUSH 메소드를 실행하여 검증 데이터를 스택에 삽입하는 단계 및, 스택에 입출력되는 데이터의 결과값을 확인하여 데이터 순서의 정합여부 및 오버플로우 발생 여부를 확인하는 단계를 포함할 수 있다.
상기 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계는, 복수의 참여자로부터 제시된 복수의 파라미터를 입력하는 단계, 적어도 둘 이상의 임의의 파라미터를 선택하는 단계, 복수개의 임의의 단어를 입력받아 엔트로피를 제공하는 단계 및, 엔트로피에 따라 ptau 파일을 생성하고, MPC를 통해 상기 ptau의 검증을 수행하는 단계를 포함할 수 있다.
상기 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 상기 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 상기 가상머신에 입력하여 테스트 연산을 수행하는 단계는, 계좌의 잔액을 전송할 송신계정을 입력받는 단계, 토근을 수신할 수신계정을 입력받는 단계, 송신계정으로부터 전송될 토큰의 금액을 입력받는 단계 및, 상기 송신계정의 계좌 잔액이 전송할 금액보다 큰지 확인하고, 만족하는 경우 가상머신에 전송절차를 요청하고, 만족하지 않는 경우 전체 절차를 재진행하는 단계를 포함할 수 있다.
상기 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계는, 상기 가상머신이 상기 검증절차에 대한 코드를 연산하여 영지식 증거를 생성하여 메모리에 저장하면, 상기 메모리로부터 영지식 증거를 읽어드려 트랜잭션 별로 저장하는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면, 블록체인 네트워크에서 모든 트랜잭션에 대한 검증을 대체하여 빠른 속도로 검증절차를 완료할 수 있는 영지식 증명이 적용된 가상머신을 검증할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기를 이용한 영지식 증명 로직을 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증 장치의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 스택 구조를 모식화한 도면이다.
도 5 내지 도 8은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증 방법을 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기를 이용한 영지식 증명 로직을 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증 장치의 구조를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 스택 구조를 모식화한 도면이다.
도 5 내지 도 8은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증 방법을 나타낸 도면이다.
상기한 바와 같은 본 발명을 첨부된 도면들과 실시예들을 통해 상세히 설명하도록 한다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
이하의 설명에서, 본 발명의 실시예에 따른 ' 록체인 가상머신의 검증 장치'를 가리키는 용어는, '검증 장치'로 약식 표기될 수 있다.
또한, 이하의 설명에서, "영지식 증명(zero knowledge proof; ZKP)"은 암호학에서 어느 증명자가 상대방 검증자에게 어떤 명제가 참이라는 것을 증명할 때, 그 명제의 참 거짓 여부를 제외한 어떤 지식도 노출시키지 않는 상호 작용의 절차를 의미한다.
또한, 어떠한 명제가 참이라는 것을 증명하려는 쪽을 증명자(prover)라고 하고, 증명 과정에 참여하여 증명자와 정보를 주고 받는 쪽을 검증자(verifier)라고 한다. 영지식 증명에 참여하는 당사자들이 상대방을 속이려는 목적으로 프로토콜을 임의로 변경하는 경우, 당사자들이 부정직하다 또는 정직하지 않다고 한다. 그 외의 경우에는 정직하다고 한다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신의 검증 방법을 설명한다.
도 1은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기(Key Generator; 10)는 기준 프로그램의 크기(program size), 명령어 및 스텝의 입력개수 및, 시간을 입력받아 일반 검증을 위한 서킷 로직을 생성하는 서킷 생성기(circuit generator; 11) 및 할당된 서킷으로부터 zk-SNARK 검증을 위한 증명기(proving key) 및 검증키(verification key)를 생성하는 zk-SNARK 키 생성기(zk-SNARK key generator)를 포함할 수 있다.
전술한 구조에서, 키 생성기(10)의 서킷 생성기(11)는 기준이 되는 프로그램의 크기, 입력되는 명령어 크기 및 시간 등을 수신하고, 어떤 프로그램에서도 동작하는 일반연산 검증용 서킷을 생성하여 zk-SNARK 키 생성기 (12)에 할당할 수 있다.
서킷 생성기(11)에 의해 생성된 검증용 서킷은 하기의 수학식 1을 만족해야 한다. 수학식 1에 따르면, 보편적인 서킷()은 이하의 ''개 명령어, 'T '개 이하의 머신 스텝, 'n' 이하의 크기를 갖는 어떤 프로그램에서도 동작하는 서킷을 생성할 수 있다.
상기의 수학식 1을 만족하는 서킷 'C'는 프로그램이나 주요 입력 값에 의존하지 않으며, 오직 '', 'n', 'T ' 값에만 의존함에 따라 보편적(universal)이라 할 수 있고, zk-SNARK 키 생성기(12)와 결합함에 따라 검증 시스템의 파라미터 또한 보편적이게 된다.
이러한 키 생성기(10)를 이용하면, 한 번의 키 생성으로 모든 프로그램을 검증할 수 있으며, 이후에는 주어진 계산 범위에 맞는 키를 선택 가능하기 때문에 이를 통해 프로그램마다 별도의 키를 생성하는 비용의 소모를 줄일 수 있다.
또한, zk-SNARK 키 생성기(12)는 키 생성자 정보, 증명자 정보 및 검증자 정보 등을 수신한 후 시큐리티 파라미터() 및 서킷 생성기(11)에 의해 생성된 서킷()을 이용하여 증명키(proving key; pk) 및 검증키(verification key; vk)를 생성할 수 있다.
먼저, zk-SNARK 키 생성기(12)는 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 알고리즘을 이용하여 정보를 공개하지 않고 비밀 키와 같은 특정 정보의 소유를 증명할 수 있는 증거를 생성한다.
즉, zk-SNARK 키 생성기(12)는 검증 규칙을 트리플 벡터를 지시하는 수학적 형태로 변환한 후, 트리플 벡터로 변환된 검증 규칙을 라그랑주 다항식 또는 고속 푸리에 변환하여 다항함수를 생성할 수 있다.
상세하게는, zk-SNARK 키 생성기(12)는 검증 규칙을 R1CS(rank-1 constraint system) 형식으로 변환한 후, R1CS를 QAP(Quadratic Arithmetic Program)로 변환한다. 이때, 검증 규칙은 입력 금액이 출력 금액보다 큰지, 트랜잭션이 적절한 서명이 있는지 또는 입력이 UTXO에 속하는지 여부 등에 관한 것이다.
상기 R1CS는 트리플 벡터(A, B, C)로서, 이는 검증 규칙의 수학적 형태를 의미하고, QAP는 라그랑주 다항식 또는 고속 푸리에 변환을 통해 R1CS를 이하의 수학식 2와 같은 다항식 형태로 변환할 수 있다.
그리고, zk-SNARK 키 생성기(12)는 랜덤 엘리먼트(Γ)를 통해 를 값을 산출할 수 있다. 여기서, 는 QAP 인스턴스인 ''으로 표현할 수 있고, QAP의 증거()인 ''을 이용하여 증명키(pk) 및 검증키(vk)를 생성할 수 있다.
이때, zk-SNARK 키 생성기(12)는 서킷 당 증명키(pk) 및 검증키(vk)를 한번만 생성하게 된다.
본 발명의 실시예에 따른 블록체인 가상머신에 적용되는 영지식 증명 방법은 시간이 아닌 공간에서의 추가적인 효율성을 달성하기 위한 것으로, 증명키(pk)의 크기를 줄이기 위해 산술 서킷으로부터 파생된 QAP의 구조적 특성을 이용한 것이다.
따라서, 한번의 서킷 생성으로 모든 프로그램을 검증할 수 있으며, 이후에는 주어진 계산 범위에 맞는 키의 선택이 가능하게 되며, 이를 통해 프로그램 별로 키를 생성하는 비용의 소모를 줄일 수 있다.
도 2는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 영지식 증명을 위한 키 생성기를 이용한 영지식 증명 로직을 나타낸 도면이다.
도 2를 참조하면, 본 발명의 실시예에 따른 블록체인 가상머신에 적용된 영지식 증명 로직은, 전술한 키 생성기(10)로부터 증명키(pk)를 제공받고, zk-SNARK 알고리즘을 통해 획득되는 다항함수의 계수, 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거()를 생성하는 증명자(20) 및, 전술한 키 생성기(10)로부터 검증키(vk)를 제공받고, 일반연산 검증용 서킷 중 검증과 증명에 필요한 정보를 이용하여 증거()가 유효한지 검증을 실행하는 검증자(30)를 포함할 수 있다.
이러한 증명자(20) 및 검증자(30)는 키 생성기(10)와 연결되는 하나 이상의 단말로 구현할 수 있다.
증명자(20)는 일반연산 검증용 키 생성기(10)에서 생성된 증명키(pk)를 이용하여 증거()를 생성할 수 있다. 이러한 증명자(20)는 증인 맵(witness map; 21) 및 제1 zk-SNARK 증명자(22)를 포함할 수 있고, 증인 맵(21)은 프로그램 및 입력값을 통해 서킷을 할당하고, 제1 zk-SNARK 증명자(22)는 할당된 서킷에 따라 증명키(pk)를 zk-SNARK 알고리즘을 통해 획득된 다항함수의 계수 및 검증과 증명에 필요한 정보()를 이용하여 상기의 수학식 2에 따라, 증거()를 생성할 수 있다.
또한, 검증자(30)는 검증키(vk), 검증과 증명에 필요한 정보() 및 증거()를 수신하면 증거()가 유효한지 검증하는 역할을 한다. 검증자(30)는 탑재된 제2 zk-SNARK 증명자(31)를 통해 검증키(vk)의 일부 및 검증과 증명에 필요한 정보()를 이용하여 이하의 수학식 3을 산출하고, 검증키(vk) 및 수학식 3의 결과 값을 이용하여 12개의 페어링을 계산하고 필요한 점검을 수행하여 승인(accept) 또는 거절(reject)을 출력할 수 있다.
여기서, 'vk'는 검증키, 'n'은 입력크기, 'C'는 서킷을 가리킨다.
상기의 수학식 3의 산출 과정에서 가변 기반 다중 스칼라 곱셈 기법을 사용하여 수학식 3의 계산 결과인 의 계산에 필요한 연산량을 줄일 수 있고, 페어링 평가에는 입력 크기(n)와 무관하게 일정한 시간이 걸리더라도, 이러한 평가는 매우 비싸고 작은 서킷에 대해 지배적이라 할 수 있다.
그리고, 가상머신에는 증거에 대한 검증을 수행하면, 해당 트랜잭션이 올바른 트랜잭션인지 확인한다. 이때, 가상머신의 영지식 검증부에는 일반 연산 검증이 가능한 영지식 증명 기술이 적용되어 있기 때문에 트랜잭션을 실행하지 않아도, 영지식 증거에 대한 검증을 수행하면 해당 트랜잭션이 올바른 트랜잭션인지 판단할 수 있으므로, 영지식 증명을 블록체인 가상머신에 적용할 수 있게 된다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신을 검증하는 검증 장치를 설명한다.
도 3은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신을 검증하는 검증 장치의 구조를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 검증 장치(200)는, 스마트 컨트랙트를 컴파일하는 인터프리터 및 연산기를 탑재한 영지식 증명 기반 가상머신 상에 탑재되는 스택에 저장된 데이터를 검증하는 스택 검증부(210), 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 초기 설정부(220), 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 관리자 단말(300)로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 가상머신(100)에 입력하는 CLI 제공부(230) 및, 가상머신(100)의 메모리를 참조하여 현재 연산결과를 저장하고, 차기 연산시 저장된 연산결과를 연산기(120)에 제공하여 바이트코드의 연산에 반영하는 데이터 베이스(240)를 포함할 수 있다.
그리고, 본 발명의 일 실시예에 따른 검증 장치(200)에 의해 검증되는 블록체인 가상머신(100)은 이더리움의 스펙을 만족하는 스택기반의 블록체인 가상머신 일 수 있다.
스택 검증부(210)는 top변수를 초기화하고, 둘 이상의 옵코드(opcode) 형식의 검증 데이터를 POP 메소드 및 PUSH 메소드를 통해 데이터를 입출력하여 데이터의 순서 및 오버플로우 발생을 검증할 수 있다.
특히, 본 발명의 실시예에 따른 가상머신은 이더리움과 동일한 스펙과 유사한 아키텍처로 구현됨에 따라, 스택 구조를 활용하는 것을 특징으로 한다. 도 4는 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 적용된 스택 구조를 모식화한 도면으로서, 본 발명의 일 실시예에 따른 검증 방법의 대상인 블록체인 가상머신은 스택구조로 데이터를 처리할 수 있다.
특히, 본 발명의 블록체인 가상머신은 영지식 증명기반 가상머신의 요건으로서, 32 Byte word size를 지원하고, 메모리 크기가 가변적이며 스택의 크기에 제한이 없고, 반복 호출 회수(call depth)을 1024로 제한하여 함수 반복 호출을 통한 공격으로 성능이 저하되거나 보안 문제가 발생하는 것을 방지하고, 스택 기반이라는 특징이 있다.
도 4를 참조하면, 블록체인 가상머신은 소정의 프로그램 언어, 일례로서 솔리디티로 작성된 솔리디티 코드를 입력받아 이를 컴파일하여 바이트코드 형태로 변환할 수 있다.
또한, 블록체인 가상머신은 바이트코드를 스크립트 단어의 목록으로서, 데이터를 PUSH, ADD 등 연산을 가리키는 코드로서, 하나의 명령어가 연산자와 피연산자로 이루어지는 옵코드로 변환할 수 있고, 각 명령어를 스택에 저장하여 순차적으로 연산 처리할 수 있다.
이에 따라, 도 3에 나타낸 본 발명의 일 실시예에 따른 검증 장치(200)의 스택 검증부(210)는 top변수를 '-1'로 초기화하고, MAX_SIZE 및 Array 변수의 확인하고, pop 메소드 및 push 메소드의 호출을 통해 미리 설정된 하나 이상의 검증 데이터를 입출력하여 입력된 데이터와 출력된 데이터의 동일여부와, 스택 오버플로우(stack overflow) 발생여부 등을 통해 가상머신(100)이 스택 기반으로 구성되었는지 검증할 수 있다.
초기 설정부(220)는 연산기(120)와 연결되어 영지식 증명을 위한 트러스티드 셋업(trusted setup)이 설정되었는지 확인하고, 그렇지 않을 경우 트러스티드 셋업 과정을 수행할 수 있다.
이를 위해, 초기 설정부(220)는 셋업절차에서 임의의 참여자에 의해 제시된 두 개의 파라미터를 입력 받고, 복수개의 임의의 단어를 입력받아 엔트로피를 제공하여 ptau를 생성하고, MPC(Multi Party Computation)를 통해 검증을 수행할 수 있다.
이때, 본 발명의 가상머신(100)에 적용된 영지식 증명 기술로서 zk-SNARK에서는 검증키나 증명키를 생성하는 대신 트러스티드 셋업을 활용할 수 있고, 이를 위한 'power of tau(τ)'가 이용될 수 있다.
'power of tau'는 트러스티드 셋업에서 사용되는 무작위 비공개 리스트를 가리킨다. 트러스티드 셋업은 zk-SNARK의 연산에 대한 증명 및 검증에 공개 파라미터가 필요하며, 이는 증명자와 검증자를 서로 신뢰할 수 있도록 하는 초기설정이라고 할 수 있다. 이러한 초기설정은 악의적인 사용자에 의해 거짓 증거를 생성하는 데 악용될 수 있으며, 이러한 문제점을 보완하기 위해 'power of tau'를 이용하게 된다.
트러스티드 셋업 과정에서 'tau(τ)' 값은 타원 곡선 암호화를 통해 암호화되며, 이후 초기 설정부(220)는 암호화된 결과물을 공개하고 원본인 'τ' 값은 폐기한다. 이때, 'τ' 값이 노출되는 경우 zk-SNARK의 건실성을 보장할 수 없게 되며, 이에 보안 파라미터인 'τ' 값의 생성을 분산화하기 위해 다수의 참가자들에 의해 'τ'을 생성하는 'powers of tau ceremony'가 제안되었다.
초기 설정부(220)는 트러스티드 셋업을 실행하기 위해서 두 개의 파라미터를 입력받을 수 있다. 첫 번째 파라미터는 어떤 커브를 사용할 것인지를 선택하는 것이며 'bn128'과 'bls12-381'을 모두 제공할 수 있다.
두 번째 파라미터는 해당 'powers of tau ceremony'가 받아들일 수 있는 제약 조건의 개수일 수 있다. 예를 들어, '12'를 입력했다고 하면 제약조건의 개수는 2^12의 값인 4096 개가 된다. 두 번째 파라미터로 제공하는 값의 최대치는 28 일 수 있다.
다음으로, 초기 설정부(220)는 임의의 단어 몇 개를 입력받아 엔트로피를 제공할 수 있다. 이 단계에서는 프로토콜의 'transcript'를 입력 값으로 넣고 새로운 'transcript'를 출력 값으로 받는데, 그 출력 값에는 새로운 기여자가 수행하는 계산이 포함될 수 있다. 여기서, 'ptau' 파일에는 지금까지 발생한 모든 도전과 대응에 대한 이력이 포함될 수 있다.
다음으로, 초기 설정부(220)는 'powers of tau ceremony'를 검증하는 절차를 수행할 수 있다. 'powers of tau ceremony'를 통해 생성되는 'ptau' 파일은 MPC(Multi Party Computation)을 통해 검증된다.
CLI 제공부(230)는 관리자 단말(300)에 커맨드 라인 인터페이스(Command Line Interface)를 제공하고, 관리자 단말(300)로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 가상머신(100)에 입력할 수 있다.
CLI 제공부(230)는 관리자 단말(300)로부터 라인단위로 입력되는 명령어에 의한 검증절차를 가상머신에 입력하여 정상적으로 동작하는지 결과를 제공할 수 있다.
이때, CLI 제공부(230)는 관리자에 의해 라인 단위로 입력되는 프라이빗 권한의 검증절차를 가상머신에 순차적으로 입력하고 프라이빗 권한의 결과를 수신하여 관리자 단말(300)에 표시할 수 있다.
먼저, 검증절차로서 관리자 단말(300)은 보유하고 있는 금액을 전송할 계정(계좌)과 수금할 계정(계좌)을 선택하고, 송금할 금액을 입력할 수 있고, 이에 CLI 제공부(230)는 입력된 값들을 영지식 검증부(121)에 입력할 값으로 변환하고 실행함수를 호출하여 서킷을 통해 zk-SNARK 증거를 생성하고, 결과값을 출력할 수 있다.
데이터 베이스(240)는 가상머신(100)의 연산기(120)에서 수행된 연산결과를 저장할 수 있다. 데이터 베이스(240)는 가상머신(100)을 통해 수행된 연산들을 저장함으로써, 차기 연산 수행시 이전 결과들이 반영되도록 할 수 있도록 하는 기능을 지원할 수 있다.
한편, 가상머신(100)은 검증 트랜잭션에 대한 코드를 연산하여 영지식 증거를 생성하여 메모리에 저장할 수 있고, 데이터 베이스(240)는 메모리에 저장된 영지식 증거를 트랜잭션 별로 저장할 수 있다.
전술한 구조에 따라, 본 발명의 실시예에 따른 검증 장치는 블록체인 가상머신이 목적에 맞게 제작했는지 검증할 수 있다,
이하, 도면을 참조하여 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신에 대한 검증 방법을 상세히 설명한다.
도 5 내지 도 8은 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신 검증 장치의 검증 방법을 나타낸 도면이다. 이하의 설명에서 각 단계별 실행주체는, 별도의 기재가 없더라도 본 발명의 영지식 증명 기반 블록체인 가상머신의 검증 장치 및 그 구성부가 되며, 이는 연결된 관리자 단말의 입력에 따라 검증절차를 수행할 수 있다.
도 5를 참조하면, 본 발명의 실시예에 따른 영지식 증명 기반 블록체인 가상머신 검증 장치에 의한 검증 방법은, 스마트 컨트랙트를 컴파일하는 인터프리터 및 연산기를 탑재한 영지식 증명 기반 블록체인 가상머신을 검증하는 방법으로서, 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계(S100), 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계(S200), 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 가상머신에 입력하여 테스트 연산을 수행하는 단계(S300) 및, 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계(S400)를 포함할 수 있다.
먼저, 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계(S100)로서, 검증 장치는 가상머신이 스택 기반으로 구현되었음을 검증하기 위해 가상머신에 탑재되는 스택에 데이터를 입출력하여 정상적인 스택구조를 갖는지 판단할 수 있다.
이를 위해, 검증 장치는 스택을 초기화하고, 업코드 연산자인 POP, PUSH를 이용하여 데이터를 입출력하고 데이터의 입출력순서 및 오버플로우 발생을 검증할 수 있다.
다음으로, 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계(S200)에서는, 검증 장치가 연산기의 증명키 및 검증키를 생성하거나 또는, zk-SNARK를 위한 트러스티드 셋업을 설정할 수 있다. 특히 검증장치는 zk-SNARK가 적용된 연산기에 대하여 트러스티드 셋업 여부를 확인하고, 설정되어 있지 않은 경우, 'power of tau(τ)'를 이용할 수 있다.
다음으로, 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 가상머신에 입력하여 테스트 연산을 수행하는 단계(S300)에서는, 관리자가 검증 장치에 관리자 단말을 연결하고, 검증 장치가 제공하는 커맨트 라인 인터페이스(CLI)를 통해 라인 단위의 검증절차를 입력하여 테스트 연산을 수행하게 된다. 이러한 검증절차로는 임의의 두 계좌간 토큰의 이체 트랜잭션이 적용될 수 있다.
다음으로, 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계(S400)는 전술한 가상머신에 대한 검증 단계에서 생성되는 연산결과를 검증 장치에 탑재되는 데이터 베이스화하여 저장하는 단계로서, 데이터 베이스에 저장되는 데이터를 차기 연산 수행시 반영되도록 하는 역할을 한다.
이하, 도면을 참조하여 전술한 따른 영지식 증명 기반 블록체인 가상머신 검증 장치에 의한 검증 방법의 각 단계별 절차를 구체적으로 설명한다.
도 6을 참조하면, 본 발명의 실시예에 따른 가상머신 검증 방법에서 스택 데이터를 검증하는 단계는, 스택의 top변수를 초기화하는 단계(S110), 둘 이상의 옵코드 형식의 검증 데이터를 POP 메소드 및 PUSH 메소드를 실행하여 검증 데이터를 스택에 삽입하는 단계(S120) 및, 스택에 입출력되는 데이터의 결과값을 확인하여 데이터 순서의 정합여부 및 오버플로우 발생 여부를 확인하는 단계(S130)로 세분화될 수 있다.
먼저, 검증 장치는 가상머신 스택의 top변수의 초기화 단계(S110)를 진행할 수 있다. 스택에 데이터를 저장하기 위해서는 top변수의 초기화 과정을 거쳐야 하며, 이후 PUSH 등의 연산자를 통해 데이터를 순차적으로 저장할 수 있다.
다음으로, 메소드를 실행하여 검증 데이터를 스택에 삽입하는 단계(S120)로서, 검증 장치는 POP, PUSH 및 ADD 등의 메소드 연산자를 통해 스택에 데이터를 삽입, 삭제, 조회 등의 기능을 수행하고 가상머신의 스택으로부터 결과를 수신 받을 수 있다.
다음으로, 입출력되는 데이터의 결과값을 확인하는 단계(S130)로서, 검증 장치는 미리 준비된 순서를 갖는 입출력값과, 스택에 입력되는 데이터 및 저장된 데이터에 의한 연산결과와 비교하여 가상머신이 이더리움 기반 스펙을 충실히 따르고 있는지 여부와, 데이터의 순서 및 오버플로우 발생 등을 검증하게 된다.
전술한 스택 검증이 완료되면, 검증 장치는 영지식 증명과 관련된 요건을 검증할 수 있다.
도 7을 참조하면, 본 발명의 실시예에 따른 가상머신 검증 방법에서 트러스티드 셋업과 관련된 절차로서, 복수의 참여자로부터 제시된 복수의 파라미터를 입력받는 단계(S210), 적어도 둘 이상의 임의의 파라미터를 선택하는 단계(S220), 복수개의 임의의 단어를 입력받아 엔트로피를 제공하는 단계(S230) 및, 엔트로피에 따라 ptau 파일을 생성하고, MPC를 통해 ptau의 검증을 수행하는 단계(S240)를 포함할 수 있다.
본 발명의 실시예에 따른 블록체인 가상머신은, 영지식 증명을 블록체인에 도입함에 따라, 전술한 키 생성기 및 서킷 생성기를 통해 증명키 및 검증키를 생성하여 이용하거나, 공지의 zk-SNARK 기법 등을 통해 영지식 증명 절차를 수행할 수도 있다.
특히, zk-SNARK는 이러한 상호 거래를 하기 위한 공개 매개변수를 필요로 하며, 이는 증명자와 검증자 간 신뢰할 수 있는 초기설정으로서 트러스티드 셋업이 요구된다.
이에, 검증 장치는 zk-SNARK를 이용하는 경우, 가상머신에 트러스티드 셋업여부를 확인하고, 준비되지 않은 경우 다음과 같은 절차, 특히 'power of tau ceremony' 를 통해 트러스티드 셋업을 수행할 수 있다.
이를 위해, 복수의 참여자로부터 제시된 복수의 파라미터를 입력 받는 단계(S210)로서, 검증 장치는 'power of tau ceremony'에 참여하는 참여자들의 참여자 단말로부터 제시된 복수의 파라미터를 입력 받을 수 있다.
다음으로, 적어도 둘 이상의 임의의 파라미터를 선택하는 단계(S220)에서는, 검증 장치가 'power of tau ceremony'를 실행하기 위해 어떠한 커브를 사용할지를 결정하는 제1 파라미터와, 제약 조건의 개수를 의미하는 제2 파라미터를 선택하여 가상머신에 알릴 수 있다.
이러한 값들은 검증 장치에 연결되는 관리자 단말의 입력에 의해 선택될 수 있다.
다음으로, 복수개의 임의의 단어를 입력받아 엔트로피를 제공하는 단계(S230)는, 검증 장치가 관리자 단말로부터 복수개의 임의의 단어를 입력받아 엔트로피를 제공받는 단계로서, 검증 장치는 'power of tau' 프로토콜의 'transcript'를 입력 값으로 넣고 새로운 'transcript'를 출력 값으로 수신할 수 있다. 이때, 출력 값에는 새로운 기여자가 수행하는 계산이 포함될 수 있다.
그리고, 엔트로피에 따라 ptau 파일을 생성하고, MPC를 통해 ptau의 검증을 수행하는 단계(S240)로서, 검증 장치는 'powers of tau ceremony'를 통해 생성되는 'ptau' 파일을 MPC(Multi Party Computation)을 통해 검증하게 된다.
전술한 영지식 증명에 대한 검증이 완료되면, 검증 장치는 인터페이스 및 데이터 저장과 관련된 요건을 검증할 수 있다.
도 8을 참조하면, 본 발명의 실시예에 따른 가상머신 검증 방법에서는 검증 장치가 관리자 단말(300)에 커맨드 라인 인터페이스(Command Line Interface)를 제공할 수 있고, 관리자 단말(300)로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 가상머신(100)에 입력하여 정상적으로 동작하는지의 결과를 관리자 단말에 제공할 수 있다.
특히, 검증절차는 일례로서, 블록체인 계좌간 토큰 이체를 위한 트랜잭션 일 수 있고, 관리자는 이를 실행하기 위한 라인단위의 명령으로 입력하여 블록체인 가상머신이 의도된 트랜잭션을 정상적으로 처리할 수 있는지 확인하게 된다.
또한, 검증절차는 CLI에 입력되는 명령어 라인 단위로 이루어지고, 관리자 계정의 프라이빗 권한으로 진행될 수 있고, 그 결과 또한 프라이빗 권한으로 제공될 수 있다.
상세하게는, 검증을 수행하는 관리자는 관리자 단말을 이용하여 검증 장치에 접속할 수 있고, 커맨드 라인 인터페이스를 통해 명령어 코드를 입력하여 검증절차를 수행할 수 있다.
이러한 검증 절차는, 계좌의 잔액을 전송할 송신계정을 입력받는 단계(S310), 토근을 수신할 수신계정을 입력받는 단계(S320), 송신계정으로부터 전송될 토큰의 금액을 입력받는 단계(S330), 송신계정의 계좌 잔액이 전송할 금액보다 큰지 확인하는 단계(S340) 및, 만족하는 경우 가상머신에 전송절차를 요청하고, 만족하지 않는 경우 전체 절차를 재진행하는 단계(S350)를 포함할 수 있다.
먼저, 전술한 검증 절차에 따라, 관리자 단말은 커맨드 라인에 토큰을 송신할 소정의 잔액이 존재하는 송신계정(계좌)을 입력함에 따라 검증 장치가 이를 가상머신에 전달하게 된다(S310), 이어서, 검증 장치는 관리자 단말로부터 입력되는 토큰을 수신할 수신계정(계좌)을 입력받아 가상머신에 전달한다(S320).
다음으로, 검증 장치는 송신계정으로부터 전송될 토큰의 금액을 입력받아 가상머신에 전달한다(S330).
전술한 명령어 코드 입력 절차가 완료되면, 검증 장치는 설정된 송신계정의 계좌 잔액이 전송할 금액보다 큰지 확인한다(S340). 계좌잔액이 전송금액보다 큰 것을 만족하는 경우 가상머신에 전송절차를 요청하고, 이에 따라 가상머신의 연산기는 영지식 서킷에 입력할 값들을 생성하고 연산을 수행하게 된다. 만약, 계좌잔액이 부족하다면 트랜잭션을 반려되고, 최초 절차부터 재 진행하게 된다.
이후, 검증 장치는 영지식 증명절차가 종료되고 해당 트랜잭션에 대한 전송결과를 가상 머신으로부터 수신하고, 이를 관리자 단말에 제공할 수 있다(S350).
아울러, 전술한 검증절차 중에 입력되거나 출력되는 데이터는 가상머신의 스택을 비롯하여 메모리에 저장될 수 있고, 검증 장치는 탑재되는 데이터 베이스에 각종 데이터를 라인 단위로 저장함으로써, 이후 절차 진행시 참조할 수 있도록 한다.
상기한 설명에 많은 사항이 구체적으로 기재되어 있으나 이것은 발명의 범위를 한정하는 것이라기보다 바람직한 실시예의 예시로서 해석되어야 한다. 따라서, 발명은 설명된 실시예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위에 균등한 것에 의하여 정하여져야 한다.
10 : 키 생성기 11 : 서킷 생성기
12 : zk-SNARK 키 생성기 20 : 증명자
21 : 증인 맵 22, 31 : zk-SNARK 증명자
30 : 검증자 100 : 가상머신
200 : 검증 시스템 210 : 스택 검증부
220 : 초기 설정부 230 : CLI 제공부
240 : 데이터 베이스 300 : 관리자 단말
12 : zk-SNARK 키 생성기 20 : 증명자
21 : 증인 맵 22, 31 : zk-SNARK 증명자
30 : 검증자 100 : 가상머신
200 : 검증 시스템 210 : 스택 검증부
220 : 초기 설정부 230 : CLI 제공부
240 : 데이터 베이스 300 : 관리자 단말
Claims (5)
- 스마트 컨트랙트를 컴파일하는 인터프리터 및 연산기를 탑재한 영지식 증명 기반 블록체인 가상머신을 검증하는 방법으로서,
상기 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계;
상기 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계;
연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 상기 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 상기 가상머신에 입력하여 테스트 연산을 수행하는 단계; 및
상기 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계를 포함하고,
상기 블록체인 가상머신에 탑재되는 스택에 저장된 데이터를 검증하는 단계는,
스택의 top변수를 초기화하는 단계;
둘 이상의 옵코드 형식의 검증 데이터를 POP 메소드 및 PUSH 메소드를 실행하여 검증 데이터를 스택에 삽입하는 단계; 및
스택에 입출력되는 데이터의 결과값을 확인하여 데이터 순서의 정합여부 및 오버플로우 발생 여부를 확인하는 단계
를 포함하는 영지식 증명 기반 블록체인 가상머신의 검증방법. - 삭제
- 제 1 항에 있어서,
상기 연산기의 트러스티드 셋업 여부를 확인하고, 미확인시 셋업절차를 수행하는 단계는,
복수의 참여자로부터 제시된 복수의 파라미터를 입력하는 단계;
적어도 둘 이상의 임의의 파라미터를 선택하는 단계;
복수개의 임의의 단어를 입력받아 엔트로피를 제공하는 단계; 및
엔트로피에 따라 ptau 파일을 생성하고, MPC를 통해 상기 ptau의 검증을 수행하는 단계
를 포함하는 영지식 증명 기반 블록체인 가상머신의 검증방법. - 제 1 항에 있어서,
상기 연결된 관리자 단말에 커맨드 라인 인터페이스를 제공하고, 상기 관리자 단말로부터 입력되는 하나 이상의 명령어로 구성되는 검증절차를 상기 가상머신에 입력하여 테스트 연산을 수행하는 단계는,
계좌의 잔액을 전송할 송신계정을 입력받는 단계;
토근을 수신할 수신계정을 입력받는 단계;
송신계정으로부터 전송될 토큰의 금액을 입력받는 단계; 및
상기 송신계정의 계좌 잔액이 전송할 금액보다 큰지 확인하고, 만족하는 경우 가상머신에 전송절차를 요청하고, 만족하지 않는 경우 전체 절차를 재진행하는 단계
를 포함하는 영지식 증명 기반 블록체인 가상머신의 검증방법. - 제 1 항에 있어서,
상기 가상머신의 메모리를 참조하여 현재 연산결과를 데이터 베이스에 저장하는 단계는,
상기 가상머신이 상기 검증절차에 대한 코드를 연산하여 영지식 증거를 생성하여 메모리에 저장하면, 상기 메모리로부터 영지식 증거를 읽어들여 트랜잭션 별로 저장하는 단계
를 포함하는 영지식 증명 기반 블록체인 가상머신의 검증 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210153150A KR102519490B1 (ko) | 2021-11-09 | 2021-11-09 | 영지식 증명 기반 블록체인 가상머신의 검증방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210153150A KR102519490B1 (ko) | 2021-11-09 | 2021-11-09 | 영지식 증명 기반 블록체인 가상머신의 검증방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102519490B1 true KR102519490B1 (ko) | 2023-04-10 |
Family
ID=85984890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210153150A KR102519490B1 (ko) | 2021-11-09 | 2021-11-09 | 영지식 증명 기반 블록체인 가상머신의 검증방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102519490B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102103177B1 (ko) | 2019-11-20 | 2020-04-22 | 충남대학교 산학협력단 | 블록체인의 확장성을 위한 영지식 증명의 선택적 검증 시스템 및 그 방법 |
KR102170820B1 (ko) * | 2020-07-03 | 2020-10-28 | 주식회사 온더 | 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 시스템 |
-
2021
- 2021-11-09 KR KR1020210153150A patent/KR102519490B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102103177B1 (ko) | 2019-11-20 | 2020-04-22 | 충남대학교 산학협력단 | 블록체인의 확장성을 위한 영지식 증명의 선택적 검증 시스템 및 그 방법 |
KR102170820B1 (ko) * | 2020-07-03 | 2020-10-28 | 주식회사 온더 | 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 시스템 |
Non-Patent Citations (2)
Title |
---|
Vitalik Buterin, "Ethereum White Paper"(2019.03.)* * |
서성윤 외, "Zero Knowledge based Ethereum Virtual Machine in Circom language"(2021.03.)* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102687781B1 (ko) | 증명 검증에 기초하여 오프-체인 데이터를 인증하기 위한 시스템 및 방법 | |
JP7208989B2 (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
US11797984B2 (en) | Computer-implemented system and method for exchange of data | |
KR102215773B1 (ko) | 영-지식 증명을 갖는 계정 노트 모델에 기초한 블록체인 데이터 보호 | |
US10951410B1 (en) | System for implementing a virtual machine based on a zero-knowledge proof circuit for general operation verification | |
CN111989893A (zh) | 证明链和分解 | |
EP3885956A1 (en) | Transaction processing method and device | |
CN111597269A (zh) | 一种基于区块链的合约实现方法、装置及设备 | |
Wang et al. | A Fair and Privacy‐Preserving Image Trading System Based on Blockchain and Group Signature | |
Eldridge et al. | One-time programs from commodity hardware | |
CN115730319A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
KR102372111B1 (ko) | 영지식 증명 기반 블록체인 가상머신 검증 시스템 | |
KR102519490B1 (ko) | 영지식 증명 기반 블록체인 가상머신의 검증방법 | |
KR102494873B1 (ko) | 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 거래 수행장치 | |
CN112861184A (zh) | 资产证明的验证与生成方法、装置及电子设备 | |
KR20220041334A (ko) | 일반 연산 검증이 가능한 영지식 증명 기반 가상 머신이 적용된 블록체인 시스템 | |
KR20220101469A (ko) | 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법 | |
KR20210072711A (ko) | 사물인터넷 디바이스와 신뢰 서버 간 상호 인증 방법 및 장치 | |
CN113064899A (zh) | 资产类证券型通证交易凭证的存储方法、装置和电子设备 | |
KR102398543B1 (ko) | 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신 | |
CN115118461B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116975819A (zh) | 资质验证方法、装置及电子设备 | |
CN117714099A (zh) | 一种反爬虫方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |