KR20220108358A - Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain - Google Patents

Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain Download PDF

Info

Publication number
KR20220108358A
KR20220108358A KR1020210011277A KR20210011277A KR20220108358A KR 20220108358 A KR20220108358 A KR 20220108358A KR 1020210011277 A KR1020210011277 A KR 1020210011277A KR 20210011277 A KR20210011277 A KR 20210011277A KR 20220108358 A KR20220108358 A KR 20220108358A
Authority
KR
South Korea
Prior art keywords
data
blockchain
oracle
smart contract
framework
Prior art date
Application number
KR1020210011277A
Other languages
Korean (ko)
Inventor
류재철
김근영
김혁진
박준후
Original Assignee
충남대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 충남대학교산학협력단 filed Critical 충남대학교산학협력단
Priority to KR1020210011277A priority Critical patent/KR20220108358A/en
Publication of KR20220108358A publication Critical patent/KR20220108358A/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Disclosed is a smart contract feed framework for protecting an oracle system in a blockchain. According to an embodiment of the present invention, a signature system necessary for non-repudiation of a data source necessary to authenticate externally provided data is introduced. A blockchain can authenticate a data source presented by a data owner, and confirm that correct data is verified, based on the signature system. The data owner (verifier) cannot manipulate the data received from the data source in the middle, and an oracle interface which can be written in Solidity is provided to verify a proof including authentication of external data, such that a design for the privacy of a prover can solve a problem which is difficult to be implemented by a smart contract developer. Also, evaluation of the performance and costs for a protocol and a language which can be referred when implementing a proposed framework against costs of proof data generation and smart contract verification implemented in Solidity on Ethereum, and the size of stored data can be provided.

Description

블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크{Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain}Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain

본 발명은 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크에 관한 것으로서, 더욱 상세하게는 외부 소스 서버의 미들웨어와 데이터 증명자, 검증 컨트랙트로 구성되는 프레임워크로 웹 서버에서 조회된 페이지에서 추출된 데이터를 데이터 소유자가 zk-SNARKs으로 증명하고, 검증할 수 있는 스마트 컨트랙트를 제공할 수 있도록 한 기술에 관한 것이다. The present invention relates to a smart contract feed framework for protecting an oracle system in a block chain, and more particularly, it is a framework composed of middleware of an external source server, a data prover, and a verification contract. It is about a technology that allows the data owner to prove the extracted data with zk-SNARKs and provide a smart contract that can be verified.

블록체인은 비트코인과 같은 암호 화폐에서 활용되고 있으며 스마트 컨트랙트는 이러한 블록체인에서 동작하는 프로그램으로써 게임, 보험, 금융 등 다양한 탈중앙화 어플리케이션을 구축하는데 사용된다.Blockchain is used in cryptocurrencies such as Bitcoin, and smart contracts are programs that operate on such block chains and are used to build various decentralized applications such as games, insurance, and finance.

탈중앙화를 이루기 위해 블록체인은 합의(e.g. Bitcoin PoW [4])에 의해 트랜잭션의 유효성을 검증한다. 블록체인의 합의는 내부 시스템으로 검증되어야 하는 요소(e.g. 계정의 잔액)에 대해서만 검증이 이루어지며, 스마트 컨트랙트에서 구현된 함수는 입력된 데이터의 실행은 보장하지만, 데이터의 신뢰성을 보장하지는 못한다. 특히 입력된 데이터를 통해 큰 금액의 이체 등이 구현된 함수가 실행되는 경우 입력 데이터로 인해 파생되는 결과는 매우 중요해진다. 하지만, 블록체인이나 혹은 스마트 컨트랙트가 제공하는 보안은 외부 데이터의 출처에 대한 인증이나, 유입 과정에서의 무결성 증명을 지원하지 않는다. To achieve decentralization, the blockchain validates transactions by consensus (e.g. Bitcoin PoW [4]). The consensus of the blockchain is verified only for the elements that need to be verified by the internal system (e.g. account balance), and the function implemented in the smart contract guarantees the execution of the input data, but does not guarantee the reliability of the data. In particular, when a function that implements a large amount of money transfer is executed through the input data, the result derived from the input data becomes very important. However, the security provided by the blockchain or smart contract does not support authentication of the source of external data or proof of integrity in the inflow process.

블록체인 외부에서 생성된 데이터는 블록체인 내부에서는 검증할 수 없는 정보로 외부에서 발생한 데이터의 신뢰를 확보하는 과정이 필요하다. 스마트 컨트랙트의 프로세스는 이러한 외부 데이터를 블록체인에 제공하는 역할을 "오라클"이라고 부른다.Data generated outside the block chain is information that cannot be verified inside the block chain, and it is necessary to secure the trust of the data generated outside the block chain. The smart contract's process is called "Oracle", which serves to provide these external data to the blockchain.

대표적으로 오라클을 활용할 수 있는 분야로 탈중앙화 금융(De-Fi)이 있다. 탈중앙화 금융에서 필요한 담보 대출, 이자 상품 등을 구현하기 위해서는 상품의 근간이 되는 코인 혹은 토큰의 안정화가 필요한데, 이를 위해서는 현재 가격 환율 정보에 기반하여 구현이 되어야 한다. 예를 들어, 현재 비트코인의 가격 당 달러 환율 정보가 이에 해당한다. 코인 당 가격 정보를 제공하는 대표적인 웹 사이트로는 코인 마켓캡 및 거래소 등이 존재하기 때문에 이와 같은 정보를 블록체인에서 활용하기 위해서는 오라클이 필요하다.Decentralized finance (De-Fi) is a typical field where oracles can be used. In order to implement the necessary collateral loans and interest products in decentralized finance, it is necessary to stabilize the coin or token, which is the basis of the product. For example, the current Bitcoin price per dollar exchange rate information corresponds to this. Since coin market caps and exchanges exist as representative websites that provide price information per coin, an oracle is required to utilize such information in the block chain.

블록체인에서는 검증과 공유 원장을 구성하기 위하여 기본적으로 트랜잭션을 공개 저장한다. 공개키 주소의 해시 값을 사용하여 가명성(Pseudonymity)을 제공하지만, 자금의 이동, 금액의 합계 등은 추적이 가능하다. 트랜잭션 공개는 스마트 컨트랙트에서 상태 변경을 통해 사전 정보를 알 수 있어 익명이 요구되는 시스템에서는 문제가 된다. In blockchain, transactions are basically publicly stored in order to verify and constitute a shared ledger. Although the hash value of the public key address is used to provide pseudonymity, the movement of funds and the total amount of money can be tracked. Transaction disclosure is problematic in systems that require anonymity because it allows prior information to be known through state changes in smart contracts.

블록체인의 외부 정보를 유입시키기 위한 오라클 문제가 대두되고 있다. 오라클 문제를 해결하기 위한 방법 중 기존 인터넷 인프라인 TLS (Transport Layer Security)에 기반하여 오라클을 구성하는 방법이 제안되어 왔다. 하지만, 현재 이러한 방법들은 외부 데이터에 대한 프라이버시 보호를 지원하지 않는 단점을 가지고 있을 뿐 아니라, 검증을 통해 데이터에 기반한 스마트 컨트랙트의 프로세스를 자동화로 구성하는데 제한이 있다.The problem of oracles for introducing information from outside the blockchain is emerging. Among the methods to solve the Oracle problem, a method of configuring an Oracle based on TLS (Transport Layer Security), an existing Internet infrastructure, has been proposed. However, currently, these methods have the disadvantage that they do not support privacy protection for external data, and there is a limitation in configuring the process of smart contract based on data to be automated through verification.

이에 본 출원인은 외부 소스 서버의 미들웨어와 데이터 증명자, 검증 컨트랙트로 구성되는 프레임워크로 조회된 페이지에서 추출된 데이터를 데이터 소유자가 zk-SNARKs으로 증명하고, 검증할 수 있는 스마트 컨트랙트를 제공하는 방안을 제안하고자 한다.Accordingly, the present applicant proposes a method to provide a smart contract that enables the data owner to prove and verify the data extracted from the searched page with zk-SNARKs as a framework consisting of middleware of external source server, data prover, and verification contract would like to propose

따라서, 본 발명은 외부 소스 서버의 미들웨어와 데이터 증명자, 검증 컨트랙트로 구성되는 프레임워크로 조회된 페이지에서 추출된 데이터를 데이터 소유자가 zk-SNARKs으로 증명하고, 검증할 수 있는 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크를 제공하고자 함에 있다.Therefore, the present invention is an Oracle system in a blockchain where the data owner can prove and verify the data extracted from the searched page with zk-SNARKs as a framework composed of middleware of external source server, data prover, and verification contract. It is intended to provide a smart contract feed framework to protect

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

본 발명의 일 실시예에 의거한 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크는A smart contract feed framework for protecting an oracle system in a blockchain according to an embodiment of the present invention is

개발자가 활용할 수 있는 오라클 타입을 지원하고 프라이버시 보호하는 검증 컨트랙트를 지원하기 위해 인터페이스를 통해 외부 데이터를 컴파일하여 바이트코드로 배포하는 전처리기; A preprocessor that compiles external data through an interface and distributes it as bytecode in order to support the Oracle type that developers can utilize and to support the verification contract that protects privacy;

전처리기의 바이트코드에 대해 Ziraffe 프레임워크를 구성하는 프레임워크 생성부; 및a framework generator that configures the Ziraffe framework for the bytecode of the preprocessor; and

생성된 프레임워크로 전처리된 데이터에 대한 검증을 수행하는 검증부를 포함하는 것을 일 특징으로 한다It is characterized in that it includes a verification unit that performs verification on the data preprocessed by the generated framework.

일 실시 예에 따르면, 외부에서 제공된 데이터를 인증하기 위해 필요한 데이터 소스의 부인 방지를 위해 필요한 서명 체계를 도입한다. 이를 기반으로 블록체인은 데이터의 소유주가 제시한 데이터의 출처를 인증하고, 올바른 데이터가 검증되었음을 확인할 수 있다. 데이터 소유주(증명자)는 데이터 소스로부터 응답받은 데이터를 중간에 조작이 불가능하다. According to an embodiment, a signature scheme necessary for non-repudiation of a data source necessary for authenticating externally provided data is introduced. Based on this, the blockchain can authenticate the source of the data presented by the owner of the data and confirm that the correct data has been verified. The data owner (prover) cannot manipulate the data received from the data source in the middle.

외부 데이터의 인증을 포함한 Proof를 검증할 수 있도록 Solidity에서 작성 가능한 오라클 인터페이스를 제공함에 따라 증명자의 프라이버시를 위한 설계는 스마트 컨트랙트 개발자가 구현하기 어려운 문제를 해결할 수 있다. By providing an oracle interface that can be written in Solidity to verify proofs including authentication of external data, designing for prover privacy can solve problems that are difficult for smart contract developers to implement.

증명 데이터 생성과 이더리움 상에서 Solidity로 구현된 스마트 컨트랙트 검증 연산의 비용과 저장되는 데이터의 크기에 대항하는 제안된 프레임워크를 구현할 때 참조할 수 있는 프로토콜 및 언어 대한 성능 및 비용에 대한 평가를 제공할 수 있다.We will provide an evaluation of the performance and cost of protocols and languages that can be referenced when implementing the proposed framework against the cost of proof data generation and smart contract verification operation implemented in Solidity on Ethereum and the size of the data to be stored. can

본 명세서에서 첨부되는 다음의 도면들은 본 발명의 바람직한 실시 예를 예시하는 것이며, 후술하는 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니된다.
도 1은 일 실시예의 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크 개념도이다.
도 2는 일 실시예의 Ziraffe framwork의 전처리를 설명하는 구성도이다.
도 3은 일 실시예의 Ziraffe 언어를 보인 예시도이다.
도 4는 일 실시예의 검증 생성 및 증명 결과를 보인 도이다.
The following drawings attached to this specification illustrate preferred embodiments of the present invention, and serve to further understand the technical spirit of the present invention together with the detailed description of the present invention to be described later, so the present invention is a matter described in such drawings should not be construed as being limited only to
1 is a conceptual diagram of a smart contract feed framework for protecting an oracle system in a blockchain according to an embodiment.
2 is a configuration diagram for explaining the pre-processing of Ziraffe framwork according to an embodiment.
3 is an exemplary diagram illustrating the Ziraffe language according to an embodiment.
4 is a diagram illustrating verification generation and verification results according to an embodiment.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for purposes of illustration only, and may be changed and implemented in various forms. Accordingly, the embodiments are not limited to a specific disclosure form, and the scope of the present specification includes changes, equivalents, or substitutes included in the technical spirit.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as first or second may be used to describe various elements, these terms should be interpreted only for the purpose of distinguishing one element from another. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.When a component is referred to as being “connected” to another component, it may be directly connected or connected to the other component, but it should be understood that another component may exist in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression includes the plural expression unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, and includes one or more other features or numbers, It should be understood that the possibility of the presence or addition of steps, operations, components, parts or combinations thereof is not precluded in advance.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present specification. does not

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.Hereinafter, the present invention will be described in detail by describing preferred embodiments of the present invention with reference to the accompanying drawings.

도 1은 일 실시예의 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크 개념도이고, 도 2는 일 실시예의 Ziraffe framwork의 전처리를 설명하는 구성도이며, 도 3은 일 실시예의 Ziraffe 언어를 보인 예시도이고, 도 4는 일 실시예의 검증 생성 및 증명 결과를 보인 도이다.1 is a conceptual diagram of a smart contract feed framework for protecting an oracle system in a block chain of an embodiment, FIG. 2 is a configuration diagram illustrating preprocessing of the Ziraffe framwork of an embodiment, and FIG. 3 is a Ziraffe language of an embodiment It is an exemplary view, and FIG. 4 is a view showing the verification generation and verification results according to an embodiment.

도 1 내지 도 4를 참조하면, 블록체인은 비트코인과 같은 암호 화폐에서 활용되고 있다. 탈중앙화가 가지는 중요한 점은 블록체인에서 참가자들이 프로토콜 참여 할 때, 모두 동등한 권한을 전제로 한다는 것과 특정 단일 기관에 의해 통제되지 않는다는 것을 의미한다. 합의에 의한 탈중앙성은 특정 소수 혹은 단일 기관에 통제되지 않음으로써, 블록체인은 검열 저항성(Censorship resistance)을 가진다. 또 블록체인은 원장으로써 비가역적인(혹은 불변한, immutable) 성격을 가지기 때문에 과거 내역에 대한 위변조를 어렵게 만든다. 블록체인에서 비가역성은 시간이 지날수록 쌓이는 체인의 길이에 비례하여, 암호학적 일방향성 함수로 각 블록을 연결함으로써 무결성을 확보한다.1 to 4 , the block chain is utilized in cryptocurrencies such as Bitcoin. An important point of decentralization is that when participants participate in the protocol in the blockchain, they all have equal rights and are not controlled by any single institution. As consensus-based decentralization is not controlled by a specific few or a single institution, the blockchain has censorship resistance. In addition, as a ledger, blockchain has an irreversible (or immutable, immutable) nature, making it difficult to forge or falsify past details. In blockchain, irreversibility is proportional to the length of the chain that accumulates over time, and integrity is secured by connecting each block with a cryptographic one-way function.

블록체인에서는 검증과 공유 원장을 구성하기 위하여 기본적으로 트랜잭션을 공개 저장한다. 공개키 주소의 해시 값을 사용하여 가명성(Pseudonymity)을 제공하지만, 자금의 이동, 금액의 합계 등은 추적이 가능하다.. 트랜잭션 공개는 스마트 컨트랙트에서 상태를 변경하는데, 이를 통해 사전 정보를 알 수 있어 익명이 요구되는 시스템에서는 문제가 된다. In blockchain, transactions are basically publicly stored in order to verify and constitute a shared ledger. Although the hash value of the public key address is used to provide pseudonymity, the movement of funds and the total amount of money can be tracked. Transaction disclosure changes the state in the smart contract, through which prior information is known. This is a problem in systems where anonymity is required.

스마트 컨트랙트는 블록체인에서 실행되는 프로그램으로, 대표적인 개발 언어로 이더리움의 솔리디티(Solidity)가 있다. 솔리디티는 튜링완전언어로(Turing-Complete Languages) 가상 머신인 EVM (Ethereum Virtual Machine) 내에서 실행된다. 이더리움 가상 머신은 스마트 컨트랙트에 전달된 입력 값으로 실행되는데, DoS(Denial of Service)를 예방하기 위해 비용을 부과하는 gas개념을 도입하였다. 따라서, 이더리움과 같은 스마트 컨트랙트 플랫폼은 트랜잭션에 블록체인 내에서 실행되는 연산 비용을 수수료와 함께 제시해야 한다. 반면, Off-chain에서 실행되는 연산은 블록체인에서 실행되는 연산과 무관하기 때문에 비용이 발생하지 않는다. 검증 가능한 연산을 활용하여 Off-chain에서 수행한 연산을 On-chain에서 검증하는 방식은 비용 효율적이다.A smart contract is a program that runs on a block chain, and Solidity of Ethereum is a representative development language. Solidity runs within the Ethereum Virtual Machine (EVM), a virtual machine in Turing-Complete Languages. The Ethereum virtual machine runs with the input value passed to the smart contract, and the gas concept was introduced to prevent DoS (Denial of Service). Therefore, a smart contract platform such as Ethereum must present the transaction cost of the computation executed within the blockchain along with a fee. On the other hand, there is no cost because the operation executed off-chain is independent of the operation executed on the block chain. It is cost-effective to use verifiable operations to verify operations performed off-chain in on-chain.

한편, 블록체인에서 스마트 컨트랙트 오라클은 외부 정보의 신뢰성을 확보하기 어려운 문제를 다룬다. 블록체인의 외부에서 정보를 가져오는 경우, 오라클은 데이터 피드를 위한 역할을 담당한다. 데이터 소스에서 가져온 정보임을 검증하기 위해서는 TLS를 적용할 수 있다. 현재 수정된 TLS 1.3은 공개키 암호를 지원하지만, 웹 서버의 부인 방지를 위한 서명 기능을 제공하지 않기 때문에 별도의 웹 서버가 블록체인 네트워크에 참여하거나 서버가 개인키로 서명을 하도록 프로토콜을 수정해야한다. TLS-N은 TLS에 부인방지 메커니즘을 추가하여 오라클을 구성한다. TLS-N은 TLS1.3과 호환되도록 구성되었으며, TLS handshake 과정에서 requester와 generator는 서로 주고받은 TLS record에 서명한 결과를 블록체인에서 검증하여, 서로 통신한 과정을 부인할 수 없는 메커니즘을 제안하였다. On the other hand, in the blockchain, smart contract oracles deal with the difficult problem of securing the reliability of external information. In the case of fetching information from outside the blockchain, the oracle is responsible for the data feed. TLS can be applied to verify that the information is obtained from a data source. Currently, modified TLS 1.3 supports public key cryptography, but does not provide a signature function for non-repudiation of the web server, so a separate web server must participate in the blockchain network or the protocol must be modified so that the server signs with the private key . TLS-N configures oracles by adding a non-repudiation mechanism to TLS. TLS-N is configured to be compatible with TLS1.3, and during the TLS handshake process, the requester and generator verify the result of signing the TLS record exchanged with each other in the blockchain, and proposed a mechanism that cannot deny the process of communicating with each other.

웹 서버는 직접적으로 블록체인과 통신하지 않기 때문에, 제공된 데이터를 블록체인 상에서 데이터 소유주가 직접 증명해야 한다. 이를 위해선 데이터를 소유한 사용자가 웹에서 제공되는 자신의 데이터에 대해서 서명된 형태로 발급받고, 블록체인에서 제공하여 검증받을 수 있도록 구성되어야 한다. 클라이언트-서버 구조에서 주고 받을 수 있는 데이터 형식을 JSON 타입으로 구성하고, 블록체인에 저장된 스마트 컨트랙트로 저장할 수 있도록 검증 가능한 형식으로 제공되기 위해서는 서버의 미들웨어가 별도로 추가되어야 한다. 우리는 이 같은 접근 법을 가지고 오라클 프레임워크를 구성하였다.Since the web server does not communicate directly with the blockchain, the data provided must be verified by the data owner directly on the blockchain. For this, the user who owns the data must be configured so that his/her data provided on the web can be issued in a signed form and verified by providing it in the blockchain. In order to provide the data format that can be sent and received in the client-server structure in JSON type and to be provided in a verifiable format so that it can be stored as a smart contract stored in the blockchain, middleware of the server must be added separately. We have built the Oracle framework with this approach.

여기서, 영지식(Zero Knowledgeness) 증명이란 어떠한 사실이 존재할 때, 이를 증명하기 위한 증명자와 검증하고자 하는 검증자가 존재하는 상황에서 구성되는 암호학적 프로토콜이다. 예를 들어, 인증 시스템에서 영지식 증명을 적용할 경우 인증에서 요구되는 패스워드나 개인정보를 드러내지 않고, 값을 알고 있음을 증명하는 방식으로 구성할 수 있다. 영지식 증명으로 어떠한 사실을 증명하고 검증할 것인지, 숨기고자 하는 비밀값이 무엇인지를 정의하여 프로토콜로 구현할 수 있다. Here, the zero-knowledge proof is a cryptographic protocol constructed in the presence of a prover to prove and a verifier to verify when a certain fact exists. For example, when zero-knowledge proof is applied in the authentication system, it can be configured in such a way that it proves that it knows the value without revealing the password or personal information required for authentication. With zero-knowledge proof, it can be implemented as a protocol by defining what facts to prove and verify and what secret values to hide.

영지식 증명은 증명자와 검증자 간의 프로토콜에서 증명자가 비밀값을 드러내지 않고 검증자가 증명하고자 하는 사실에 대한 문장 (statement)의 참/거짓 여부만을 확인 시킨다. 증명자와 검증가에게 주어진 함수가 존재할 때, 함수의 입력으로 문장과 비밀값(witness)을 입력으로 하여 증명 값을 생성하면, 검증자가 검증과정에서 비밀과 관련된 어떠한 값도 알 수 없어야 한다. 이러한 특성을 정리하면, 영지식 증명은 다음과 같은 세 가지 조건을 만족해야 한다. In the zero-knowledge proof, in the protocol between the prover and the verifier, the prover does not reveal the secret value and only verifies the truth/false of the statement about the fact that the verifier wants to prove. When a function given to a prover and a verifier exists, if a proof value is generated by inputting a sentence and a secret value (witness) as input to the function, the verifier should not be able to know any value related to the secret during the verification process. Summarizing these characteristics, zero-knowledge proof must satisfy the following three conditions.

·완전성 (Completeness) : 어떤 문장이 참이면, 검증자는 이 사실을 납득할 수 있어야 함 Completeness: If a statement is true, the verifier must be able to understand this fact.

·건실성 (Soundness) : 어떤 문장이 거짓이면, 검증자를 납득시킬 수 없어야 함 Soundness: If a statement is false, the verifier must not be convincing.

·영지식성 (Zero Knowledgeness) : 증명 과정에서 검증자는 문장의 참, 거짓 이외에는 아무것도 알 수 없어야 함Zero Knowledgeness: During the proof process, the verifier should be able to know nothing other than the truth or falsehood of a statement.

NIZK (Non-Interactive Zero-Knowledge)는 을 통해 증명자의 진술을 검증 가능하도록 변환하면서, 진술의 진실이외의 정보는 유출하지 않아 개인 데이터에 대한 증명이 가능하다. zk-SNARK(zero knowledge Succint Non-Interactive Argument of Knowledge) [27]는 짧은 short Proof로부터 비대화형 방식으로 상호작용하지 않는다. 따라서 증명자는 하나의 메시지로 검증자를 설득할 수 있다. 증명자는 증명 생성 중에 개인정보를 사용할 수 있으며 검증자는 해당 정보에 대해 아무것도 알 수 없다. NIZK (Non-Interactive Zero-Knowledge) converts the prover's statement to be verifiable through zk-SNARK (zero knowledge Succint Non-Interactive Argument of Knowledge) [27] does not interact in a non-interactive manner from short short proofs. Thus, the prover can persuade the verifier with a single message. The prover can use the personal information during proof creation, and the verifier knows nothing about that information.

Off-chain 연산에서 zk-SNARKs은 계산이 약한 검증자가 계산을 신뢰할 수 없는 검증자에게 아웃소싱 한후 계산을 수행하고 결과가 정확하다는 증거를 포함하여 결과를 반환할 수 있다. 특히, zk-SNARK에서는 검증 비용이 계산과 무관하기 때문에 이더리움과 같은 계산 비용을 요구하는 플랫폼에서 비용효과적이다. zk-snarks이 도입된 후 최적화와 같은 방법 들도 연구되었다[28]In off-chain operations, zk-SNARKs can perform computations after a validator with weak computations outsources the computations to untrustworthy validators and return a result including proof that the result is correct. In particular, zk-SNARK is cost-effective on platforms that require computational costs, such as Ethereum, because verification costs are independent of computation. After zk-snarks was introduced, methods such as optimization were also studied [28].

스마트 컨트랙트에서 블록체인 외부의 데이터를 검증할 수 있도록 하기 위해서 우리는 ZoKrates 도구 상자를 활용한다. ZoKrates는 zk-SNARKs의 Bellman 라이브러리의 Rust 구현을 사용한다. ZoKrates는 이더리움에서 검증할 수 있도록 Solidity로 구현된 검증 컨트랙트를 제공한다. zkay에서 제안된 언어는 ZoKrates를 활용하여 개발자가 어플리케이션을 구성하여 배포할 수 있도록 돕는다. 개발 언어 차원에서 이를 지원하기 때문에 개발자는 보다 쉽게 검증 컨트랙트를 배포하고 작동 시키는 트랜잭션을 관리할 수 있다. 이러한 장점을 반영하여 우리는 외부 데이터를 검증하기 위한 오라클을 위한 새로운 언어 타입을 지원하도록 설계하였다. To enable smart contracts to validate data outside of the blockchain, we utilize the ZoKrates toolbox. ZoKrates uses the Rust implementation of the Bellman library of zk-SNARKs. ZoKrates provides a verification contract implemented in Solidity for verification on Ethereum. The language proposed by zkay utilizes ZoKrates to help developers configure and deploy applications. By supporting this at the level of the development language, developers can more easily deploy and operate the verification contract and manage transactions. Reflecting these advantages, we designed to support a new language type for Oracle for validating external data.

Ziraffe 프레임워크는 도 1에 도시된 바와 같이 세가지 부분으로 구성된다. 먼저, 블록체인에 스마트 컨트랙트를 배포하는데 도움을 줄 수 있다. 두번째는 사용자 측면에서 외부 데이터의 소스에 접근하여 가져온 값을 블록체인으로 전달할 수 있도록 하기 위한 것이다. 마지막으로 사용자가 데이터 소스에서 데이터를 가져올 때 서버에서 발급에 대한 서명을 통해 외부 출처를 증명할 수 있도록 한다. 3장에서는 각 세부사항에 대해서 설명하고자 한다.The Ziraffe framework consists of three parts as shown in FIG. 1 . First, it can help deploy smart contracts on the blockchain. The second is to allow the user to access the source of external data and deliver the imported value to the block chain. Finally, when a user pulls data from a data source, it allows the server to prove its external origin by signing the issuance. Chapter 3 will explain each detail.

스마트 컨트랙트 개발자는 하이레벨 언어를 이용하여 컨트랙트를 작성한다. 현재 가장 널리 사용되고 있는 언어인 Solidity를 이용한 다양한 어플리케이션이 개발되어 있다. Solidity는 이더리움 뿐만 아니라 Klaytn, RSK, TRON, Hyperledger 등 다양한 플랫폼에서 컴파일 되어 활용될 수 있다. 하지만, Solidity에서 오라클을 구현하기 위해서는 오라클 인프라가 구현 된 후에 이를 활용하는 방식으로 개발되고 있어, Solidity 자체에 대한 오라클 인터페이스는 지원하지 않는다. A smart contract developer writes a contract using a high-level language. Various applications using Solidity, the most widely used language at present, have been developed. Solidity can be compiled and used on various platforms such as Klaytn, RSK, TRON, and Hyperledger as well as Ethereum. However, in order to implement Oracle in Solidity, it is developed in a way that utilizes the Oracle infrastructure after it is implemented, so the Oracle interface to Solidity itself is not supported.

개발자 입장에서는 오라클이 필요한 어플리케이션을 제작할 때, Solidity로 개발하고 Chainlink, Provable과 같은 플랫폼을 연동해야 하는 문제가 발생한다. 이는 오라클이 Solidity에서 지원하는 인터페이스가 아니라 플랫폼에서 지원하는 인터페이스이기 때문이다. 따라서 개발자 입장에서는 오라클 플랫폼 사업자를 선정해야 하는 문제가 발생한다. 이것은 곧 오라클 비용에 대한 수수료 문제를 발생시킨다. From the developer's point of view, when creating applications that require oracles, there is a problem of developing with Solidity and interworking with platforms such as Chainlink and Provable. This is because Oracle is not an interface supported by Solidity, but an interface supported by the platform. Therefore, from the developer's point of view, there is a problem in selecting an Oracle platform operator. This creates a fee issue for Oracle costs.

또 다른 이슈는 스마트 컨트랙트에서 외부 데이터를 가져올 때 발생하는 프라이버시다. 외부 데이터를 블록체인에 저장하거나, 검증을 요구하기 위해 제출하는 것은 사용자로부터 원하지 않는 정보 노출을 야기시킨다. Off-chain computation과 같은 방법을 이용함으로써, 개인정보와 관련된 연산은 Off-chain에서 수행하고, 이에 대한 검증만을 스마트 컨트랙트로 수행할 수 있다. 하지만 개발자가 이를 고려하여 설계하려면, 검증 컨트랙트를 직접 개발할 수 있어야 하며, 이에 대한 암호학적 지식이 필요하다. 결과적으로 간단한 인터페이스가 없을 경우, 프라이버시 문제에 대한 요구 사항을 해결하기 어렵다. Another issue is the privacy that arises when fetching external data from smart contracts. Storing external data on the blockchain or submitting it to request verification leads to undesired disclosure of information from users. By using methods such as off-chain computation, calculations related to personal information can be performed off-chain, and only verification can be performed with smart contracts. However, in order for a developer to design in consideration of this, it is necessary to be able to directly develop a verification contract, and cryptographic knowledge about it is required. As a result, without a simple interface, it is difficult to solve the requirements for privacy issues.

우리의 프레임워크의 목적은 어플리케이션 내에 종속적으로 활동하는 사용자가 외부 데이터를 증명할 수 있도록 하는 것에 있다. 따라서 Ziraffe 프레임워크를 이용해서 개발한 어플리케이션에서는 사용자가 필요할 경우 직접 외부 데이터를 스스로 전달할 수 있는 역할을 한다. 개발자는 단지 제공되는 인터페이스를 활용하여 어플리케이션을 개발하면 된다. 우리의 해결 방법은 스마트 컨트랙트 언어에 대한 타입과 이를 지원하는 전처리기를 도입하여 개발자에게 오라클을 대체할 수 있는 인터페이스를 지원하는 것이다. The purpose of our framework is to allow users who are dependent on the application to prove external data. Therefore, in an application developed using the Ziraffe framework, the user can directly transmit external data if necessary. A developer only needs to develop an application using the provided interface. Our solution is to introduce a type for the smart contract language and a preprocessor that supports it to provide an interface that can replace the oracle to developers.

전처리기의 역할은 크게 두 가지로 나눌 수 있다. 첫 번째는 개발자가 활용할 수 있는 오라클 타입을 지원하는 것이다. Solidity 언어를 알고 개발할 수 있는 개발자 누구나 타입을 활용하여 오라클을 구현할 수 있도록 지원한다. 두번째는 프라이버시 보호 타입의 검증 컨트랙트를 지원하는 것이다. 우리는 Zokrates와 같은 시스템을 활용하여 오라클 검증이 필요한 컨트랙트를 생성하도록 지원한다. 프레임워크를 통해 개발자는 도구에 대해 알지 못해도 인터페이스를 활용하여 Solidity로 작성된 검증 컨트랙트를 구현할 수 있다. The role of the preprocessor can be divided into two main categories. The first is to support Oracle types that developers can use. Any developer who knows and can develop Solidity language supports to implement Oracle using types. The second is to support the verification contract of the privacy protection type. We utilize systems like Zokrates to support the creation of contracts that require oracle verification. The framework allows developers to implement verification contracts written in Solidity by utilizing the interface without knowing about the tool.

인터페이스를 활용하여, 개발자의 컨트랙트 개발은 쉬워질뿐만 아니라 사용자의 프라이버시도 보호될 수 있다. 이러한 목적을 위하여 Solidity 언어에서 지원하는 type을 구현하고, 블록체인의 개발 및 배포 단계에 적용하였다. 외부 데이터에 대한 증명을 위하여 필요한 컨트랙트는 인터페이스를 구현한 결과를 전처리하여 컴파일되고, 이에 대한 바이트코드로 배포된다.By utilizing the interface, not only can the developer's contract development become easier, but the user's privacy can also be protected. For this purpose, the type supported by the Solidity language was implemented and applied to the development and distribution stage of the block chain. The contract required for proof of external data is compiled by preprocessing the result of implementing the interface and distributed as bytecode.

사용자가 외부 소스로부터 데이터를 가져와서 증명할 수 있는 데이터는 은행의 잔액이나 발급된 자격에 대한 증명, 현재 서버의 상황에 대한 내역 증명(예를 들어 보험 지급을 위한 현재 상황) 등이 존재할 수 있다. 사용자가 직접 외부 데이터에 대한 출처를 제공하기 위해서는 우선적으로 제시된 데이터에 대한 검증이 가능해야 한다. 또 한가지 중요한 사항으로는 증명 가능한 proof를 생성하면서 프라이버시 보호가 가능해야 한다. Data that a user can prove by importing data from an external source may include proof of bank balance or issued credentials, proof of current server status (for example, current status for insurance payment), and the like. In order for a user to directly provide a source for external data, it should be possible to verify the presented data first. Another important thing is to be able to protect privacy while generating a provable proof.

우리는 이러한 프레임워크를 구성하기 위하여 zk-SNARK을 활용한다. Zk-snarks에서 생성된 proof는 블록체인 트랜잭션에 포함되어 전파되고 블록체인 상에서 검증 가능하도록 구성한다. 블록체인에서는 사용자가 제출한 트랜잭션으로부터 데이터에 대한 출처의 인증과, 필요한 사실에 대하여 검증할 수 있다. 이 때 사용자의 개인 정보의 내역은 드러나지 않는다. We use zk-SNARK to construct such a framework. Proof generated by Zk-snarks is included in the blockchain transaction, propagated, and configured to be verifiable on the blockchain. In the blockchain, from the transaction submitted by the user, the authentication of the source of the data and the necessary facts can be verified. At this time, the details of the user's personal information are not revealed.

Zk-snarks은 초기 구성을 위하여 trusted setup이 필요하다. 따라서 스마트 컨트랙트 개발 단계에서 사용자가 제시하려는 트랜잭션의 필드, 서버의 데이터 제공 내역은 사전에 정의되어 있어야 한다. 증명하고자 하는 사실이 확정되면, 이에 대한 컨트랙트가 배포되고, 사용자는 서버로부터 받은 서명된 데이터의 결과를 제출함으로써 해당 사실에 대하여 증명할 수 있다.Zk-snarks needs a trusted setup for initial configuration. Therefore, in the smart contract development stage, the fields of the transaction that the user wants to present and the data provision details of the server must be defined in advance. When the fact to be verified is confirmed, the contract for this is distributed, and the user can prove the fact by submitting the result of the signed data received from the server.

Ziraffe 프레임워크에서 데이터 소스의 서명은 필수적이다. TLS 프로토콜에서 사용되는 ECDH 프로토콜은 HTTSP를 위한 키 교환에는 사용되지만, 서명된 데이터를 제공하지 않아, 사용자에게 데이터 소스의 부인방지 기능을 제공하지 않는다. 따라서 사용자의 데이터가 정확한 출처로 왔음을 인증하기 위해서는 데이터 소스의 출처에 대한 인증이 필요하다. 우리는 이를 위해 ECDH로 교환된 암호 키를 이용하여 서버가 서명하도록 프레임워크를 구성하였다. In the Ziraffe framework, the signature of the data source is mandatory. The ECDH protocol used in the TLS protocol is used for key exchange for HTTSP, but does not provide signed data, thus providing users with non-repudiation of the data source. Therefore, in order to authenticate that the user's data came from the correct source, authentication of the source of the data source is required. For this, we configured the framework to be signed by the server using the cryptographic key exchanged with ECDH.

서버가 사용자에게 데이터 내역에 서명하기 위하여 사용자와 서버간에는 정해진 규격의 데이터 교환이 필요하다. 사용자가 증명하고자 하는 데이터를 zk-snark으로 proof를 생성하기 위해서, 증명 및 검증 과정에서 필요한 input 데이터에 대한 파라미터가 정의되어 있어야 한다. 우리는 이를 위해 서버에 미들웨어를 두고 사용자와 통신하도록 구성한다. In order for the server to sign the data details to the user, it is necessary to exchange data of a set standard between the user and the server. In order to generate a proof of the data the user wants to prove with zk-snark, parameters for input data needed in the proof and verification process must be defined. For this, we put middleware on the server and configure it to communicate with the user.

서버의 미들웨어는 사용자와 통신하며, 블록체인과는 통신하지 않는다. 따라서 블록체인에 직접적으로 연결되거나, 블록체인에 계정을 등록할 필요가 없다. 서버는 오직 사용자와 통신하여 사용자가 필요로 하는 데이터에 서명하여 반환해주는 역할을 담당한다. 이는 HTTPS 프로토콜의 연장이다. 단, 서버가 개인키로 서명한 데이터의 결과를 검증하기 위하여 개발자가 어플리케이션 개발 단계에서 스마트 컨트랙트 공개키를 등록할 수 있어야 한다. The server's middleware communicates with the user, not the blockchain. Therefore, there is no need to connect directly to the blockchain or register an account on the blockchain. The server only communicates with the user and is responsible for signing and returning the data the user needs. This is an extension of the HTTPS protocol. However, in order to verify the result of the data signed by the server with the private key, the developer must be able to register the smart contract public key in the application development stage.

미들웨어에서 서명된 데이터를 발급하면, 사용자는 서명된 데이터를 입력으로 하며, 비밀 값을 드러내지 않는 proof를 생성한다. Proof를 검증하기 위한 컨트랙트에서는 서버의 공개키를 이용하여, 사용자가 제출한 proof가 올바른 데이터 소스로부터 왔으며, 증명 하고자 하는 사실에 대한 정확성이 보장됨을 검증한다.When the middleware issues signed data, the user takes the signed data as input and creates a proof that does not reveal the secret value. The contract for verifying proof uses the server's public key to verify that the proof submitted by the user came from the correct data source and that the accuracy of the fact to be proved is guaranteed.

Ziraffe framework를 활용하여 어플리케이션을 구축할 때, 다음과 같은 절차로 구성된다. 개발자는 Solidity 언어를 이용하여 컨트랙트를 작성하며, 프레임워크의 API를 이용하여 어플리케이션에서 요구하는 데이터에 대한 오라클 함수를 작성한다. 또한, 어플리케이션에서 데이터 소스에 해당하는 출처의 공개키를 등록한다. 개발자는 작성한 컨트랙트를 컴파일하여 블록체인 네트워크에 배포한다. 어플리케이션을 운영하면서, 사용자의 자격 증명 등 외부 데이터에 대한 검증이 필요할 때 사용자는 데이터 소스에 요청하여 HTTPS 통신을 수행한다. 데이터 소스는 미들웨어에서 사용자가 요청한 데이터에 대해 서명하여 사용자에게 응답한다. 사용자는 데이터 소스로부터 받은 데이터를 zk-SNARKs으로 연산하여 검증 할 수 있는 proof를 생성한다. 사용자는 proof를 포함한 트랜잭션을 오라클 컨트랙트로 보낸다. 오라클 컨트랙트는 제출된 proof를 검증하여 사용자의 자격 증명을 확인한다.When building an application using the Ziraffe framework, it consists of the following procedures. A developer writes a contract using the Solidity language, and writes an oracle function for the data required by the application using the API of the framework. In addition, the application registers the public key of the source corresponding to the data source. The developer compiles the written contract and distributes it to the blockchain network. While operating the application, when verification of external data such as user credentials is required, the user requests the data source to perform HTTPS communication. The data source responds to the user by signing the data requested by the user in the middleware. The user generates a proof that can be verified by calculating the data received from the data source with zk-SNARKs. The user sends the transaction including the proof to the oracle contract. The Oracle contract verifies the user's credentials by verifying the submitted proof.

외부 정보를 가져오기 위한 컨트랙트를 프로그래밍하기 위하여 우리는 솔리디티 기반의 컨트랙트의 인터페이스를 제공한다. 솔리디티 컨트랙트로 변환하기 위하여 처리되는 과정은 [그림 ]에 나타나며, Zirffe framwork에서 제공하는 인터페이스를 활용하여 솔리디티로 작성한 ZIRF 파일을 전처리하여 컴파일 하는 과정을 나타낸다. ZIRF는 작성된 언어에 대해 Lexer 및 Parser, Rewritter를 거쳐 변환된다. 여기에서 lexer는 ziraffe와 기존 solidity에서 지정한 키워드 (URL, JSON, function) 또는 연산자를 token으로 변환하는 작업을 수행한다. paser는 token을 ziraffe의 grammer 규칙에 따라 Abstract Syntax Tree를 만들어낸다. 이 후 Rewritter에서는 AST의 트리를 순회하면서 타입 체크 후 코드를 재작성한다.To program a contract to fetch external information, we provide an interface for a solidity-based contract. The process to be converted into a Solidity contract is shown in [Fig. ZIRF is converted through Lexer, Parser, and Rewriter for the written language. Here, lexer converts keywords (URL, JSON, function) or operators specified in ziraffe and existing solidity into tokens. The paser creates an Abstract Syntax Tree according to ziraffe's grammar rules. After that, the Rewriter rewrites the code after checking the type while traversing the AST tree.

사용자의 클라이언트에서 외부 소스로부터 가져오는 데이터의 형식은 그림 (a), (b)와 같이 JSON으로 구성된다. JSON은 https 요청의 결과로 받을 값에 대해 지정하기 위한 타입을 의미한다. 구조체와 같은 방식으로 사용가능하며, 서명 검증 시에 내부에 있는 값의 순서에 따라 hash 함수를 계산한다. 이더리움에는 struct 형태로 저장된다. 여기에서는 그림 (a)와 같은 형식의 경우, Hash (balance | dataOfInquiry) 값을 저장한다.The format of the data that the user's client gets from an external source is composed of JSON as shown in Figures (a) and (b). JSON means the type to specify for the value to be received as a result of the https request. It can be used in the same way as a structure, and when verifying a signature, the hash function is calculated according to the order of the values inside. In Ethereum, it is stored in the form of a struct. Here, in the case of the format shown in Figure (a), Hash (balance | dataOfInquiry) value is stored.

임의로 추가한 타입과 변수 JSON, URL을 soldity의 타입과 변수로 변경한다. JSON과 URL은 각각 이더리움에서 사용되는 struct로 변환된다. ReqParam 변수는 ZRF 에서는 표현되지만 재작성되어 만들어진 solidity 컨트랙트에서는 on-chain에서 값이 올라가지 않도록 제거한다. 새로 추가된 함수인 get, post에 대해 url에 값을 요청하고, 요청한 값에 대해 서명 검증을 영지식 증명으로 검증할 수 있는 컨트랙트로 변환한다. Change the arbitrarily added type and variable JSON and URL to the soldity type and variable. JSON and URL are converted into structs used in Ethereum, respectively. The ReqParam variable is expressed in ZRF, but in the rewritten solidity contract, the value is removed so that the value does not increase on-chain. For the newly added functions get and post, a value is requested from the url, and the requested value is converted into a contract that can verify signature verification with zero-knowledge proof.

검증을 위한 컨트랙트 VC 생성에는 ZoKrates를 기반으로 생성한다. VC는 proof를 입력으로 받아 입력한 정보에 대한 값(e.g. balance)을 드러내지 않고 증명가능하다. URL 타입은 url string 값과 url에서 전송한 값의 서명을 검증할 때 필요한 public key pk를 정의하고, 이더리움에는 struct 형태로 저장된다. ReqParm은 https 요청에서 사용되는 parameter를 지정하는 값으로 string 값을 받는다. 요청에 사용한 parameter는 https 요청에만 사용하고 블록체인에는 저장되지 않는다. 요청 시 https 요청을 하는 함수의 두번째 인자로 {id, password}와 같은 형태로 입력한다. For the creation of contract VC for verification, it is created based on ZoKrates. VC receives proof as input and can prove it without revealing the value (e.g. balance) of the input information. The URL type defines the public key pk required to verify the signature of the url string value and the value transmitted from the url, and is stored in the form of a struct in Ethereum. ReqParm receives a string value as a value that specifies the parameter used in the https request. The parameters used in the request are used only for https requests and are not stored in the blockchain. When making a request, enter it in the form of {id, password} as the second argument of the function that makes an https request.

get<Bank>는 첫번째 인자로 전달받은 url로 get 요청을 보내는 함수로 요청 결과를 받은 JSON 값을 Bank 형태로 받아 url에 해당하는 pk로 서명을 검증한다. 요청 함수는 https 요청 중 get, post를 지원한다. get<Bank>를 요청했을 때 요청 결과 JSON의 값은 [그림 ]의 (c)와 같이 나타난다. message의 값을 Bank 값으로 사용하고 서명을 signature 값을 읽어 사용한다. 이와 같은 기능을 구현한 은행의 잔액을 증명하기 위한 1컨트랙트를 개발하기 위한 예시는 (d)에 나타나있다.get<Bank> is a function that sends a get request to the url passed as the first argument. It receives the JSON value that receives the request result in the form of a bank and verifies the signature with the pk corresponding to the url. The request function supports get and post among https requests. When get<Bank> is requested, the request result JSON value is shown as (c) of [Figure ]. The value of the message is used as the Bank value and the signature is used by reading the signature value. An example for developing 1 contract to prove the balance of a bank that implements such a function is shown in (d).

TLS 1.3은 ECDHE 통해 https에 사용될 키를 교환한다. 키 교환을 통해 받은 서버의 인증서를 이용하여 현재 연결된 서버가 인증된 서버인지 확인할 수 있다. 이 후 클라이언트는 서버는 암호화 통신을 수행하여 데이터를 요청하고 응답받는다. 하지만 TLS 1.3 프로토콜은 서버에서 응용 레벨 서명을 지원하지 않기 때문에 클라이언트가 서버에서 발급 받은 데이터임을 제3자에게 증명할 수 없는 문제가 있다. Ziraffe에서는 서버에서 활용할 수 있는 middleware를 적용하여 서명을 지원하도록 구성한다.TLS 1.3 exchanges keys to be used for https via ECDHE. Using the server's certificate received through key exchange, you can check whether the currently connected server is an authenticated server. After that, the client requests data and the server performs encrypted communication and receives a response. However, since the TLS 1.3 protocol does not support application-level signing in the server, there is a problem that the client cannot prove to a third party that the data is issued by the server. In Ziraffe, it is configured to support signing by applying middleware that can be utilized in the server.

정상적인 키 교환 후에 서버는 클라이언트의 데이터 요청에 응답한다. middleware는 서버가 응답하는 데이터에 대해 정의된 JSON 규격으로 응답하며, 서버의 개인키로 서명을 하여 응답하도록 구성되어 있다. [그림 ]의 c와 같이 클라이언트에서 요청한 JSON의 규격대로 서버의 서명을 추가한다. 서명되는 데이터에는 응답하고자 하는 데이터 값(e.g. balance)과 timestamp, Blockcnumber, User의 address와 서버의 인증에 사용된 ID 값을 포함할 수 있다. After a normal key exchange, the server responds to the client's data request. The middleware responds with the JSON standard defined for the data the server responds to, and is configured to respond by signing the server's private key. As shown in c of [Figure ], the server's signature is added according to the JSON requested by the client. The data to be signed may include the data value to be responded to (e.g. balance), timestamp, Blockcnumber, user's address, and ID value used for server authentication.

서버의 역할은 단지 발급한 데이터에 대한 부인방지를 위하여 서명을 하는 것에 있다. 따라서, Ziraffe 프레임워크를 이용하여 개발할 때, 프로그래머는 어플리케이션 구축 단계에서 사용자(클라이언트)와 외부 출처(서버)간의 규격을 정의해야 한다. 정해진 규격은 zk-SNARK에서 setup 과정에서 필요하다.The role of the server is only to sign the issued data for non-repudiation. Therefore, when developing using the Ziraffe framework, the programmer must define the standard between the user (client) and the external source (server) in the application building phase. The specified standard is required in the setup process in zk-SNARK.

사용자는 외부 소스와 통신하는 클라이언트의 역할과 함께 데이터를 증명하기 위한 증명자로 컨트랙트로 검증될 수 있는 Proof를 생성한다. 예를 들어, 증명자는 “나는 얼마를 가지고 있다.”를 블록체인에 제출하여 검증하면서, 금액을 드러나지 않도록 Proof를 생성할 수 있다. The user creates a Proof that can be verified by the contract as a prover to prove data with the role of a client communicating with an external source. For example, a prover can create a Proof so that the amount is not revealed while verifying by submitting “How much do I have” to the blockchain.

zk-SNARKs은 초기 trusted setup을 필요로하기 때문에, 개발자는 사용자가 증명해야할 사실에 대해 미리 정의하고, 이에 대한 JSON과 검증할 수 있는 컨트랙트를 동시에 배포하면서 연산에 대해 정의한다. 연산의 주요 내용은 (1) 서버의 출처와 URL과 대응되는 pk의 확인 (2) 서버로부터 발급 받은 데이터의 서명에 대한 검증 (3) JSON의 값 중 Private data에 대한 값을 드러내지 않고 검증할 수 있도록 Proof를 생성한다. Since zk-SNARKs require an initial trusted setup, the developer defines the facts that the user needs to prove in advance, and defines the operation while simultaneously deploying the JSON and verifiable contract for this. The main contents of the operation are (1) verification of the source of the server and the pk corresponding to the URL (2) verification of the signature of the data issued from the server (3) The value of private data among JSON values can be verified without revealing it Create a Proof so that

생성된 Proof는 검증 컨트랙트 VC를 호출하는 트랜잭션을 구성하여 제출하며, Proof 생성에 사용된 Input값과 서버의 서명을 함께 제출한다. VC에서는 Proof 연산에 대해 검증하고, 연산 결과로 참/거짓을 판별한다. The generated Proof composes and submits a transaction that calls the verification contract VC, and submits the input value used to generate the Proof and the signature of the server. In VC, the Proof operation is verified, and true/false is determined as the result of the operation.

앞에서 설명한 Ziraffe 프레임워크의 구현에 대해서 평가한다. 블록체인에서 이더리움과 같은 스마트 컨트랙트 플랫폼은 연산의 비용을 지불해야 한다. 뿐만 아니라, 이더리움에서 영구적으로 저장되는 스토리지 데이터에 값을 쓸 경우 이에 대한 비용도 지불해야 한다. On-chain에서 필요한 연산은 비용이 필요한 반면, Off-chain 연산은 비용은 필요하지 않기 때문에 주요 성능은 시간으로 측정될 수 있다. 따라서 주요 성능 지표는 서버에서 발급한 데이터를 zk-SNARKs으로 Off-chain에서 Proof를 생성하는 시간, 이더리움에 배포된 컨트랙트에서 Proof를 검증하는데 소모되는 gas 비용, Proof를 저장하는데 필요한 크기로 나타낸다. Evaluate the implementation of the Ziraffe framework described above. In the blockchain, smart contract platforms such as Ethereum have to pay the cost of computation. In addition, if you write a value to storage data that is permanently stored in Ethereum, you will also have to pay for it. Since on-chain operations require cost, off-chain operations require no cost, the main performance can be measured in time. Therefore, the main performance indicators are the time to generate Proof off-chain with zk-SNARKs for the data issued by the server, the gas cost consumed to verify the Proof in the contract deployed on Ethereum, and the size required to store the Proof.

평가에 사용된 이더리움 네트워크는 Rapsten Test network를 기반으로 진행하였으며, Off-chaion 연산에서 Proof를 생성한 클라이언트는 Intel i7 811 CPU 3.67GHZ 와 16GB RAM을 가지고 있다. Proof 생성에 사용된 데이터는 JSON의 길이를 고정하기 위하여 필요한 Hash 값이 몇번 수행되느냐에 따라 달라 질 수 있다. 따라서 Hash 함수의 수행과 서명을 검증한 Proof를 대상으로 테스트를 진행하였다. 서명 생성에는 ECDSA-(curve 몇? 이런거)이 사용되었다.The Ethereum network used for evaluation was conducted based on the Rapsten Test network, and the client that generated Proof in off-chaion operation has Intel i7 811 CPU 3.67GHZ and 16GB RAM. The data used to generate Proof may vary depending on how many times the hash value required to fix the length of JSON is performed. Therefore, the test was conducted on the Proof that verified the execution of the hash function and the signature. ECDSA- (how many curves? something like this) was used to generate the signature.

Ziraffe framwork을 이용하여 JSON 입력을 대상으로 한 결과 JSON 데이터에 hash를 한 값을 서명한 데이터로 Proof를 생성하는 시간은 12,413 msec가 나타난다. 이 때, Proof를 검증하기 해 필요한 값은 256,112 gas가 나타난다. 컨트랙트의 스토리지에 저장되는 값은 256bytes이며, zk-SNRAKs의 경우 검증 비용의 복잡도가 일정하기 때문에 Proof 생성 시간에 관계없이 네트워크 상태의 가격만 반영된 값으로 대동소이 하게 나타나는 것을 볼 수 있다.As a result of using Ziraffe framwork for JSON input, the time to generate Proof is 12,413 msec by signing the hash value to JSON data. At this time, 256,112 gas appears as the required value to verify the Proof. The value stored in the storage of the contract is 256 bytes, and in the case of zk-SNRAKs, since the complexity of the verification cost is constant, it can be seen that the value reflects only the price of the network state regardless of the Proof creation time.

Ziraffe framwor은 오라클 컨트랙트 프로그래머가 오라클을 쉽게 구축하기 위한 환경을 지원하는 것을 목적으로 한다. 본 장에서는 기존에 있는 연구와 제안한 프레임워크와의 차이점을 설명한다. Ziraffe framwor aims to support an environment for Oracle contract programmers to easily build oracles. This chapter explains the differences between the existing research and the proposed framework.

Blockchain and Privacy 탈중앙화 블록체인은 트랜잭션의 유효성을 검증하여 저장하기 때문에 프라이버시 문제가 발생할 수 있다. 이를 해결하기위한 방법으로 트랜잭션의 익명성을 보장하기 위한 zerocash[]나 Monero[], 혹은 payment channel에 영지식 증명을 적용한 연구[][]가 있다. 하지만 이러한 연구들은 On-chain에서 검증할 수 있는 사실을 드러내지 않고 검증하기 위한 목적으로 설계되었기 때문에 데이터 출처 인증을 지원하지 않는다. Blockchain and Privacy A decentralized blockchain can cause privacy issues because it stores and verifies the validity of transactions. To solve this problem, there are studies [][] that apply zero-knowledge proof to zerocash[] or Monero[], or payment channels to ensure the anonymity of transactions. However, these studies do not support data source authentication because they are designed for the purpose of verifying without revealing facts that can be verified on-chain.

Oracle with TLS 오라클을 구현하기 위해 탈중앙화 환경에서 투표를 시도하는 연구들이 있으나, 데이터를 사용자가 스스로 가져오기 위한 인증 절차를 지원하지 않는다. 반면, Town Crier[], TLS-N[], Deco[]는 TLS를 블록체인에 연결하기 위한 프로토콜을 제시하여 데이터 인증을 지원한다. 특히 Deco의 경우, TLS 1.3 버전에서 외부 출처에 대한 인증을 위해 서버의 수정없이 3자 핸드쉐이크 방식을 통해 증명자가 오라클(검증자)에게 검증할 수 있도록 프로토콜을 구성하였다. 본 연구에서는 오라클이 별도의 운영이 없이 동작하도록 구성하여 플랫폼 의존도를 없애며, 개발자가 이러한 환경을 개발할 수 있도록 프레임워크를 지원한다. Oracle with TLS There are studies that try to vote in a decentralized environment to implement an oracle, but they do not support the authentication procedure for users to bring their own data. On the other hand, Town Crier[], TLS-N[], and Deco[] support data authentication by presenting a protocol for connecting TLS to the blockchain. In particular, in the case of Deco, in TLS 1.3 version, the protocol is configured so that the prover can verify to the oracle (verifier) through the three-party handshake method without modifying the server for authentication of external sources. In this study, Oracle is configured to operate without a separate operation to eliminate platform dependence, and the framework is supported so that developers can develop such an environment.

Zero knowledge Proof for Smart Contract 스마트 컨트랙트에 영지식 증명을 적용하기 위해 hawk에서는 manager를 이용한 프로토콜을 구성하였다. Zokrates[]나 zkay[]는 개발자가 Off-chain연산을 구현하고, On-chain에서 컨트랙트로 검증할 수 있도록 지원하는 언어에 대해 제안하였다. ziraffe 프레임워크는 Zorkates를 활용하여 외부 데이터 출처 인증과 이에 대한 인터페이스를 제공하여 오라클 문제를 해결할 수 있는 프레임워크를 제안하였다.Zero knowledge Proof for Smart Contract In order to apply zero knowledge proof to smart contract, hawk configured a protocol using manager. Zokrates[] and zkay[] proposed languages that support developers to implement off-chain operations and verify them with contracts on-chain. The ziraffe framework proposes a framework that can solve the oracle problem by utilizing Zorkates to provide external data source authentication and an interface to it.

이에 일 실시예는 외부 데이터에 대한 출처 인증과 사용자의 프라이버시 보호를 지원할 수 있음을 보였다. 또한, 검증을 위한 컨트랙트를 프로그래머가 쉽게 구현할 수 있도록 인터페이스를 지원하도록 구성하였다. 제안된 프로세스는 외부 소스의 데이터가 필요한 어플리케이션을 구축할 때 zk-SNARKs의 검증을 구현하기 용이하며, 개발 단계에 유용성을 가져올 수 있다. 이를 반영하여, 개발자는 어플리케이션의 요구사항에 따라 필요한 환경을 구축할 수 있고, 사용자는 블록체인에 데이터를 제출할 때 private data에 대한 숨김을 보장받는다.Accordingly, one embodiment showed that it is possible to support source authentication for external data and protection of user privacy. In addition, it is configured to support the interface so that the programmer can easily implement the contract for verification. The proposed process makes it easy to implement the verification of zk-SNARKs when building applications that require data from external sources, and can bring usefulness to the development stage. Reflecting this, developers can build the necessary environment according to the requirements of the application, and users are guaranteed to hide their private data when submitting data to the blockchain.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general purpose or special purpose computers. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로 (collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기 광매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the computer-readable medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. Included are magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, those skilled in the art may apply various technical modifications and variations based on the above. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

Claims (1)

개발자가 활용할 수 있는 오라클 타입을 지원하고 프라이버시 보호하는 검증 컨트랙트를 지원하기 위해 인터페이스를 통해 외부 데이터를 컴파일하여 바이트코드로 배포하는 전처리기;
전처리기의 바이트코드에 대해 Ziraffe 프레임워크를 구성하는 프레임워크 생성부; 및
생성된 프레임워크로 전처리된 데이터에 대한 검증을 수행하는 검증부를 포함하는 것을 특징으로 하는 블록체인에서 오라클 시스템을 보호하기 위한 스마트 계약 피드 프레임워크.

A preprocessor that compiles external data through an interface and distributes it as bytecode to support the Oracle type that developers can utilize and to support the verification contract that protects privacy;
a framework generator that configures the Ziraffe framework for the bytecode of the preprocessor; and
A smart contract feed framework for protecting an oracle system in a blockchain, characterized in that it includes a verification unit that performs verification on the data preprocessed with the generated framework.

KR1020210011277A 2021-01-27 2021-01-27 Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain KR20220108358A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210011277A KR20220108358A (en) 2021-01-27 2021-01-27 Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210011277A KR20220108358A (en) 2021-01-27 2021-01-27 Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain

Publications (1)

Publication Number Publication Date
KR20220108358A true KR20220108358A (en) 2022-08-03

Family

ID=82847534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210011277A KR20220108358A (en) 2021-01-27 2021-01-27 Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain

Country Status (1)

Country Link
KR (1) KR20220108358A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230401226A1 (en) * 2022-06-09 2023-12-14 Horizen Labs, Inc. System and Method for the Creation and Management of Privacy-Preserving Audits

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230401226A1 (en) * 2022-06-09 2023-12-14 Horizen Labs, Inc. System and Method for the Creation and Management of Privacy-Preserving Audits
US11853316B1 (en) * 2022-06-09 2023-12-26 Horizen Labs, Inc. System and method for the creation and management of privacy-preserving audits

Similar Documents

Publication Publication Date Title
US11411737B2 (en) Zero knowledge proof-based privacy protection method and system for authenticated data in smart contract
CN111316595B (en) System for protecting a verification key from alteration and verifying validity of a proof of correctness
Pass et al. Micropayments for decentralized currencies
JP2024073535A (en) Implementing logic gate functionality using blockchain
KR20200096790A (en) System and method for authenticating off-chain data based on proof verification
KR20230163971A (en) Method for providing certificate service based on smart contract and server using the same
KR20200141502A (en) Computer-implemented systems and methods suitable for increasing the security of immediate offline blockchain transactions
KR20230163970A (en) Method for providing certificate service based on smart contract and server using the same
EP3979110B1 (en) Computer system and method for distributed privacy-preserving shared execution of one or more processes
US20210019745A1 (en) Method for verifying a transaction in a blockchain database
WO2019180733A1 (en) System and method for composite-key based blockchain device control
JP2022504224A (en) Computer-implemented systems and methods, including public key cryptography verification
CN116210200A (en) Blockchain communication syndrome
AU2021201672A1 (en) Computer system and method for distributed privacy-preserving shared execution of one or more processes
KR20220108358A (en) Smart Contract Data Feed Framework for Privacy Preserving Oracle System on Blockchain
CN115052007A (en) Traceable public verification method, system and terminal for cloud storage data integrity
KR20220056036A (en) Transaction execution device to implement a virtual machine based on a zero-knowledge proof circuit for general operation verification
Park et al. Smart Contract Data Feed Framework for Privacy-Preserving Oracle System on Blockchain. Computers 2021, 10, 7
Nabi et al. Fides: A system for verifiable computation using smart contracts
Stipsits Scalable Integration of Ethereum in a Microservice based Application through Layer 2 Rollups
Borek et al. Integrating a model-driven approach and formal verification for the development of secure service applications
Dawei et al. Protocol for trusted channel based on portable trusted module
Balakrishnan et al. Test-Driven Development Based on Your Own Blockchain Creation Using Javascript
Cai et al. In-Depth Interpretation of Ethereum
Chuva Governança Extensivel