KR102525157B1 - Apparatus and Methods for Verifiable Lottery - Google Patents

Apparatus and Methods for Verifiable Lottery Download PDF

Info

Publication number
KR102525157B1
KR102525157B1 KR1020170170038A KR20170170038A KR102525157B1 KR 102525157 B1 KR102525157 B1 KR 102525157B1 KR 1020170170038 A KR1020170170038 A KR 1020170170038A KR 20170170038 A KR20170170038 A KR 20170170038A KR 102525157 B1 KR102525157 B1 KR 102525157B1
Authority
KR
South Korea
Prior art keywords
lottery
key
random
hash value
network
Prior art date
Application number
KR1020170170038A
Other languages
Korean (ko)
Other versions
KR20190078668A (en
Inventor
박찬익
조용래
Original Assignee
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포항공과대학교 산학협력단 filed Critical 포항공과대학교 산학협력단
Priority to KR1020170170038A priority Critical patent/KR102525157B1/en
Publication of KR20190078668A publication Critical patent/KR20190078668A/en
Application granted granted Critical
Publication of KR102525157B1 publication Critical patent/KR102525157B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/34Betting or bookmaking, e.g. Internet betting
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C15/00Generating random numbers; Lottery apparatus
    • G07C15/006Generating random numbers; Lottery apparatus electronically

Abstract

추첨 시스템에 록체인(Blockchain)을 도입하여 참가자와 주최자 간의 신뢰 문제를 해결한 검증가능한 추첨을 위한 장치 및 방법이 개시된다.Disclosed is an apparatus and method for a verifiable lottery that solves a trust problem between a participant and an organizer by introducing a blockchain into a lottery system.

Description

검증가능한 추첨을 위한 장치 및 방법{Apparatus and Methods for Verifiable Lottery}Apparatus and Methods for Verifiable Lottery

본 발명은 추첨 시스템에서 참가자와 주최자간의 신뢰 문제를 블록체인(Blockchain)을 도입하여 해결한 것으로, 추첨을 위한 컴퓨터 소프트웨어 장치 및 방법에 관한 것이다.The present invention solves the trust problem between a participant and an organizer in a lottery system by introducing a blockchain, and relates to a computer software apparatus and method for lottery.

기존의 추첨 프로그램은 중앙 집중식(Centralized) 을 따라 구현되어 단일한 컴퓨터에서 실행된다. 추첨 실행시 사용되는 랜덤 값이 가지는 불규칙성에 따라서 추첨 시스템의 공평성이 결정되며, 모든 정보들이 중앙 집중되고 관리자 권한을 가지는 경우 모든 정보를 임의로 수정 가능하므로 이는 추첨 시스템의 신뢰성 문제를 제기한다. 랜덤 값의 불규칙성을 보장받는 기술은 대부분 미국 NIST 에서 제공하는 공공 랜덤 서비스 비콘을 사용하여 대응할 수 있으나, 중앙 집중 서버 관리자에 전적으로 의존해야 하는 문제는 여전히 해결하지 못하고 있다. 이러한 관리자 권한 문제를 해결하기 위해, 누구나 추첨 결과에 대해서 검증할 수 있게 하는 기법을 고안하는 것이 필요하다. 즉, 랜덤 값의 불규칙성은 그대로 유지하면서도, 향후 누구나 예상하고 동의하는 시점에 생성되는 랜덤 값을 사용하는 추첨시스템을 구성함으로써, 추첨 시스템의 공평성을 지원하면서도 추첨 결과에 대한 검증이 가능하게 구성한다.Existing lottery programs are implemented along a centralized system and run on a single computer. The fairness of the lottery system is determined according to the irregularity of the random value used during lottery execution, and all information can be modified arbitrarily if all information is centralized and administrator has authority, which raises the reliability problem of the lottery system. Most of the technologies that ensure random value irregularity can be countered by using public random service beacons provided by NIST in the US, but the problem of relying entirely on a centralized server manager is still not solved. In order to solve the administrator's authority problem, it is necessary to devise a technique that allows anyone to verify the lottery results. That is, by constructing a lottery system that uses random values that are generated at the time everyone anticipates and agrees to while maintaining the irregularity of the random values, the fairness of the lottery system is supported and the lottery results can be verified.

비트코인 블록체인은 기본적으로 전세계 분포되어 있는 블록 마이너 노드들이 경쟁적으로 암호학적 해쉬 퍼즐을 풀고 이를 통해 블록들 간의 체인을 구성하고 있다. 이러한 블록체인 구성을 위해 진행되는 암호학적 해쉬 퍼즐을 푸는 과정에는 기본적으로 많은 불규칙성에 기반한 과정이 내포되어 있으며, 매번 블록 마이너들이 블록을 생성할 때 마다 새로운 랜덤 값을 생성하는 것과 유사하다. 이러한 특징을 활용하면서, 추첨 시스템 동작 자체를 스마트 컨트랙트라고 불리는 블록체인상 실행되는 프로그램으로 구성함으로써 블록체인 기반 검증 가능한 추첨시스템을 구성할 수 있다.Basically, in the Bitcoin blockchain, block miner nodes distributed around the world compete to solve a cryptographic hash puzzle, and through this, a chain between blocks is formed. The process of solving the cryptographic hash puzzle for the construction of such a block chain basically involves a process based on many irregularities, and is similar to the way that block miners generate a new random value each time they create a block. While utilizing these characteristics, a blockchain-based verifiable lottery system can be configured by configuring the lottery system operation itself as a program that runs on a blockchain called a smart contract.

블록체인의 형태는 공개 블록체인, 허가형 블록체인, 그리고 컨소시움 블록체인 등으로 구별되며, 본 발명에서는 특정 형태의 블록체인을 가정하지 않지만, 설명의 편의성을 위해 허가형 블록체인 상황을 가정하고 서술한다.The form of block chain is divided into public block chain, permissioned block chain, and consortium block chain. In the present invention, a specific type of block chain is not assumed, but for convenience of explanation, a permissioned block chain situation is assumed and described. do.

리눅스 재단(Linux foundation) 산하의 오픈 소스(open source) 블록체인 플랫폼인 하이퍼레저 패브릭(Hyperledger Fabric)은 허가형 블록체인(permissioned Blockchain)을 사용하여 기업들간의 투명한 거래를 가능하게 한다.Hyperledger Fabric, an open source blockchain platform under the Linux foundation, uses a permissioned blockchain to enable transparent transactions between companies.

기존의 중앙 집중식으로 구현된 추첨 시스템은 신뢰성 문제를 포함하고 있으며, 이러한 추첨 시스템은 다음 3가지 주요한 문제를 가지고 있다.Existing centralized lottery systems have reliability problems, and these lottery systems have the following three major problems.

* 예측가능성(Predictability)* Predictability

* 조작성(Modifiability)* Modifiability

* 정보의 비공개성(Information hiding)* Information hiding

예측 가능성은 당첨자를 사전에 미리 예측할 수 있을 경우를 의미하고, 조작성은 추첨과 관련된 정보를 임의로 수정할 수 있음을 나타내며, 정보의 비공개성은 추첨과 관련된 정보를 참가자에 공개하지 않음을 뜻한다.Predictability means that the winner can be predicted in advance, operability indicates that information related to the lottery can be modified arbitrarily, and confidentiality of information means that information related to the lottery is not disclosed to participants.

이를 해결하기 위해 본 발명에서는 신뢰성 있는 추첨 시스템 장치 및 방법을 고안하였으며, 이 발명은 추첨시스템이 공평성(fairness), 불변성(immutability), 투명성(transparency), 검증가능성(verifiability) 속성을 가지도록 지원함으로써 기존 추첨시스템이 가지고 있는 3가지 주요 문제들을 해결한다. In order to solve this problem, the present invention devised a reliable lottery system device and method, and this invention supports the lottery system to have fairness, immutability, transparency, and verifiability properties, thereby It solves three main problems of the existing lottery system.

공평성은 사전에 당첨자를 예측할 수 없음을 의미하고, 불변성은 한 번 기록된 추첨 정보는 이후의 임의적 수정이 불가능함을 나타내며, 투명성은 추첨과 관련된 정보가 참가자들에 공개되어야 함을 뜻한다. 그리고 검증가능성은 추첨 시스템이 위와 같은 속성을 만족시키는지 검증이 가능해야 함을 뜻한다.Fairness means that the winner cannot be predicted in advance, immutability means that the lottery information once recorded cannot be modified later, and transparency means that the lottery-related information must be disclosed to the participants. And verifiability means that it must be possible to verify that the lottery system satisfies the above properties.

본 발명은 이를 반영하여, 기존의 중앙 집중식으로 구현된 추첨 프로그램을 블록체인 플랫폼을 사용하여 구현함으로써, 공정성, 불변성, 투명성, 검증가능성 속성을 갖는 신뢰할 수 있는 추첨 프로그램을 개발하는 것이다. 보다 자세하게는, 추첨 서비스를 제공하는 블록체인 기반의 신뢰할 수 있는 추첨 프로그램을 개발하는 것과 관련된다. Reflecting this, the present invention is to develop a reliable lottery program having fairness, immutability, transparency, and verifiable properties by implementing an existing centralized lottery program using a blockchain platform. More specifically, it is related to developing a reliable lottery program based on blockchain that provides lottery services.

본 발명은 블록체인 플랫폼을 사용하여, 공평성, 불변성, 투명성, 검증가능성 속성을 갖는 신뢰성 있는 추첨 장치 및 방안을 제안한다.The present invention proposes a reliable lottery device and method having fairness, immutability, transparency, and verifiable properties using a blockchain platform.

본 발명에서 공평성의 실현을 위해 사용한 랜덤 값은 2가지로 구분 된다. 미래에 생성될 비트 코인 블록 체인의 블록 해시와 암호학적으로 안전한 유사 난수 생성기(cryptographically secure pseudo random number generator)에 의해 생성된 랜덤 값이다. 이 둘을 조합한 값을 바탕으로 당첨자가 결정된다.In the present invention, the random value used to realize fairness is divided into two types. It is a random value generated by a block hash of the future Bitcoin blockchain and a cryptographically secure pseudo random number generator. The winner is determined based on the combination of the two.

투명성과 불변성은 블록체인으로 구현된 분산 복제 장부(distributed replicated ledger)에 의해 실현된다. 추첨과 관련된 트랜잭션들은 분산되어 있는 피어 노드들에 기록됨으로써 투명성이 확보되고, 블록 체인 형식으로 저장되기 때문에 불변성이 확보된다.Transparency and immutability are realized by a distributed replicated ledger implemented as a blockchain. Transactions related to the lottery are recorded on distributed peer nodes to ensure transparency, and immutability is secured because they are stored in the form of a block chain.

본 발명에서 제안한 추첨 시스템의 결과 검증은 분산된 환경에서 동작하는 피어 노드들이 실행하는 스마트 컨트랙트와 관련된다. 각 피어 노드들에서 독립적으로 실행되는 스마트 컨트랙트는 당첨자가 결정될 당시의 생성된 검증 키를 다시 만들고 이를 비교함으로써 추첨 결과를 검증한다.The result verification of the lottery system proposed in the present invention is related to smart contracts executed by peer nodes operating in a distributed environment. The smart contract, which runs independently on each peer node, verifies the lottery result by recreating the verification key generated at the time the winner is determined and comparing it.

스마트 컨트랙트(Smart contract)는 분산 복제 장부(Distributed replicated ledger)와의 입/출력을 수행하는 프로그램이다. 본 발명에서 사용한 하이퍼레저 패브릭에서는 이를 체인코드(Chain code)라 부르기도 한다.A smart contract is a program that performs input/output with a distributed replicated ledger. In the Hyperledger Fabric used in the present invention, this is also called a chain code.

참가자를 CA에 의해 할당 받은 공개 키의 해시로 구분하여 참가자들의 익명성을 보장하는 기법을 제공한다.It provides a technique for guaranteeing the anonymity of participants by identifying participants with the hash of the public key assigned by the CA.

본 발명은 블록체인을 도입하여 기존의 중앙 집중식이 아닌 탈 집중화(Decentralized) 된 방식의 추첨 시스템을 제안하여 신롸성 문제를 해결한다.The present invention solves the reliability problem by introducing a blockchain and proposing a decentralized lottery system instead of the existing centralized one.

리눅스 재단(Linux foundation) 산하의 오픈 소스 블록체인 플랫폼인 하이퍼레저 패브릭(Hyperledger Fabric)을 사용하여 추첨과 관련된 서비스를 제공하는 웹 기반의 프로그램을 제공한다.It provides a web-based program that provides lottery-related services using Hyperledger Fabric, an open source blockchain platform under the Linux foundation.

본 발명은 신뢰할 수 있는 추첨 시스템을 제시하고 이를 블록체인을 도입함으로써 부정직한 추첨 행사로 인한 사회적 비용을 줄일 수 있다.The present invention can reduce social costs due to dishonest lottery events by presenting a reliable lottery system and introducing a block chain.

기존의 중앙 집중식을 따르는 추첨 시스템을 신뢰할 수 있도록 만드는 기법들이 제시가 되었지만 여전히 단일 장애점 문제(single point of failure) 등의 문제가 있고 이들은 구현을 복잡하고 어렵게 만든다. 하지만 블록체인 플랫폼을 사용하면 신뢰성 문제가 쉽게 해결되고 효율적인 구현이 가능하다.Techniques for making the existing centralized lottery system reliable have been proposed, but there are still problems such as a single point of failure, which make implementation complicated and difficult. However, by using a blockchain platform, the reliability problem can be easily solved and efficient implementation is possible.

도1 은 본 발명에서 제안된 전체 시스템 구조도이다.
도 2는 시간 순에 따른 추첨 행사의 상태 변화와 가용한 체인 코드(스마트 컨트랙트) 개념도이다.
도 3은 검증을 위해 사용되는 검증 키 도출 과정의 블록 구성도이다.
1 is a diagram of the overall system structure proposed in the present invention.
Figure 2 is a conceptual diagram of state changes and available chain codes (smart contracts) of a lottery event in chronological order.
3 is a block diagram of a verification key derivation process used for verification.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. Since the present invention can make various changes and have various embodiments, specific embodiments will be illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present invention to specific embodiments, and should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention. Like reference numerals have been used for like elements throughout the description of each figure.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. Terms such as first, second, A, and B may be used to describe various components, but the components should not be limited by the terms. These terms are only used for the purpose of distinguishing one component from another. For example, a first element may be termed a second element, and similarly, a second element may be termed a first element, without departing from the scope of the present invention. The term “and/or” includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, but other elements may exist in the middle. It should be. On the other hand, when an element is referred to as “directly connected” or “directly connected” to another element, it should be understood that no other element exists in the middle.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Terms used in this application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as "comprise" or "having" are intended to designate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features It should be understood that it does not preclude the possibility of the presence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.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 to which the present invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and unless explicitly defined in the present application, they should not be interpreted in an ideal or excessively formal meaning. don't

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention will be described in more detail. In order to facilitate overall understanding in the description of the present invention, the same reference numerals are used for the same components in the drawings, and redundant descriptions of the same components are omitted. Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에서 제안된 전체 시스템 구조도이다.1 is an overall system structure diagram proposed in the present invention.

도 1에서, 블록 체인 네트워크는 도커 기반의 컨테이너 형태로 구현이 되어 있고 두 개의 조직과 각 조직 당 두 개의 피어로 구성된다. 피어(Peer)는 트랜잭션을 스마트 컨트랙트 형식(체인코드)으로 실행하고 그에 대한 기록을 블록체인에 기록한다. 체인 코드 역시 독립된 컨테이너로 구현되어 있으며 피어 노드에 의해 실행된다. DB는 couchDB를 사용하였으며 분산 데이터 베이스의 일종인 블록 체인을 저장하고 관리하는 역할을 한다. 오더러(Orderer)는 웹 서버(SDK)로부터 요청 받은 트랜잭션에 순서를 정하고 블록을 형성하여 피어 노드에 전달한다. 하이퍼레저 패브릭에서의 CA(Certificate Authority)는 블록 체인 네트워크를 이루는 구성 요소들의 신원을 관리한다. 그리고 추첨을 위한 참가자들의 신원 역시 CA에 의해 관리된다. In Figure 1, the blockchain network is implemented in the form of a Docker-based container and consists of two organizations and two peers for each organization. A peer executes a transaction in the form of a smart contract (chain code) and records the record on the blockchain. Chaincode is also implemented as an independent container and executed by peer nodes. The DB uses couchDB and serves to store and manage the block chain, which is a kind of distributed database. The orderer sets the order of transactions requested from the web server (SDK), forms blocks, and delivers them to peer nodes. CA (Certificate Authority) in Hyperledger Fabric manages the identity of the components that make up the blockchain network. And the identity of the participants for the lottery is also managed by the CA.

웹 서버 및 하이퍼레저/패브릭 SDK(Software development kit)는 사용자(웹 클라이언트)와 블록 체인 네트워크와의 상호작용을 수행한다. 즉, 사용자의 요청을 받으면 구현된 프로토콜을 따라 블록 체인 네트워크의 구성 노드들에 전달하고 그 결과를 사용자에게 알려준다. 또한 비트 코인 기반의 랜덤 비콘으로부터 랜덤 소스로 사용할 타겟 블록 번호를 가져오는 역할도 수행한다.The web server and Hyperledger/Fabric Software development kit (SDK) perform interaction between the user (web client) and the blockchain network. That is, upon receiving a user's request, it is delivered to the constituent nodes of the blockchain network according to the implemented protocol and the result is notified to the user. It also plays a role in obtaining a target block number to be used as a random source from a Bitcoin-based random beacon.

웹 클라이언트 및 사용자는 실 사용자에 따라 참여자와 주최자로 구분된다. 이들이 수행할 수 있는 트랜잭션의 종류는 다음과 같이 다섯 가지로 구분된다. 참여자는 추첨 행사 목록을 조회할 수 있는 query 트랜잭션, 추첨 행사에 대한 참여를 실행하는 subscribe 트랜잭션, 추첨 결과(당첨자 결정)를 확인하는 check 트랜잭션, 추첨 검증을 수행하는 verify 트랜잭션으로 구성된다. 주최자는 open 트랜잭션을 통해 추첨 행사를 등록할 수 있다. 위 트랜잭션들은 모두 블록 체인 네트워크에서 스마트 컨트랙트 형식으로 구현된다.Web clients and users are divided into participants and organizers according to actual users. The types of transactions they can perform are divided into five types as follows. A participant consists of a query transaction to retrieve a list of lottery events, a subscribe transaction to execute participation in a lottery event, a check transaction to check the lottery result (decision on the winner), and a verify transaction to verify the lottery. Organizers can register for lottery events through an open transaction. All of the above transactions are implemented in the form of a smart contract on a blockchain network.

비트코인 블록체인은 랜덤 수치를 제공하는 비콘으로서의 기능을 수행한다. 비트코인의 블록들은 각 이전 블록의 해시를 갖고 있고 해시 값은 해시 특성 상 예측하기가 거의 불가능하다. 따라서 당첨자를 결정하기 위한 알고리즘은 아직 형성되지 않은 미래의 블록의 해시를 랜덤 소스로 사용한다.The Bitcoin blockchain functions as a beacon that provides random numbers. Blocks in Bitcoin have a hash of each previous block, and the hash value is almost impossible to predict due to hash characteristics. Therefore, the algorithm for determining the winner uses the hashes of future blocks that have not yet been formed as a source of randomness.

도 2는 시간 순에 따른 추첨 행사의 상태 변화와 가용한 체인 코드(스마트 컨트랙트) 개념도이다.Figure 2 is a conceptual diagram of state changes and available chain codes (smart contracts) of a lottery event in chronological order.

도 2 는 추첨 행사의 시간 순에 따른 상태 변화와 가용한 체인 코드 연산을나타낸다. Figure 2 shows state changes and available chain code operations according to the chronological order of lottery events.

추첨 행사는 시간적으로 발행일 (Issue date), 마감일 (Due date), 그리고 발표일(Announce date)로 나뉜다. 발행일은 추첨 행사를 일으킨 날이다. 발행일과 마감일 사이에 참여자들은 등록된 행사에 참여할 수 있다. 그리고 발표일 이후에 결과를 확인하고 검증할 수 있다. 체인코드 연산 중 하나인 query는 시간 순에 상관 없이 언제든 호출가능하기 때문에 그림에서 생략하였다. The lottery event is chronologically divided into an issue date, a due date, and an announcement date. The date of issue is the date on which the lottery event is triggered. Between the date of publication and the deadline, participants may participate in registered events. And you can check and verify the results after the announcement date. One of the chaincode operations, query, is omitted from the figure because it can be called at any time regardless of chronological order.

open 트랜잭션은 추첨 행사를 등록한다. 입력으로 행사 이름, 발행일, 마감일, 발표일, 타겟 블록 번호, 참여 멤버 수, 우승자 수, 랜덤 키, 멤버 이름을 받아 요청된 행사를 추첨 네트워크에 등록시킨다. 타겟 블록 번호는 비트 코인 블록 체인의 최근 블록 생성 속도를 계산하여 발표일에 인접한 블록 번호를 예측하여 선택된다. 랜덤 키는 각 행사를 구별하기 위한 고유 번호를 제공한다.The open transaction registers the lottery event. As input, it receives the event name, issue date, deadline, announcement date, target block number, number of participating members, number of winners, random key, and member name, and registers the requested event in the lottery network. The target block number is selected by predicting a block number adjacent to the announcement date by calculating the recent block creation rate of the Bitcoin blockchain. The random key provides a unique number to distinguish each event.

subscribe 트랜잭션은 참가자를 선택된 추첨 행사의 참가자 목록에 추가한다. subscribe 트랜잭션은 또한 관련된 체인 코드를 호출하기 전에 등록한 참가자를 CA의 데이터 베이스에 등록하고 CA로부터 공개 키를 할당 받는다. 그리고 공개 키의 해시 값을 통해 참가자를 구분한다. 해시 함수의 단방향(one-way) 특성에 의해 역변환이 불가능하므로 익명성이 보장 되고, 결과가 나왔을 경우 당첨자는 안전하게 당첨된 사실을 증명할 수 있다. The subscribe transaction adds the participant to the list of participants for the selected raffle event. The subscribe transaction also registers registered participants in the CA's database and receives a public key from the CA before invoking the associated chaincode. Then, participants are identified through hash values of public keys. Due to the one-way nature of the hash function, inverse transformation is impossible, so anonymity is guaranteed, and if the result is obtained, the winner can safely prove that they have won.

check 트랜잭션은 현재 시간이 발표일이 되었을 때 호출 가능하며, 당첨자를 결정하는 체인코드를 호출한다. check 트랜잭션이 호출될 때에는 반드시 랜덤 소스로 사용될 타겟 블록이 발행이 되어야 한다. 그렇지 않을 경우에는 실패한다. 타겟 블록이 발행이 되었다면, 해당 블록의 해시 값을 읽어와 이를 랜덤 소스를 사용한 당첨자 결정 알고리즘을 호출한다. 당첨자 결정 알고리즘은 랜덤 소스가 정해지면 결정적인(Deterministic) 방식으로 동작한다. 본 구현에서는 다음과 당첨자가 결정된다.The check transaction can be called when the current time is the announcement date, and calls the chaincode that determines the winner. When the check transaction is called, the target block to be used as a random source must be issued. otherwise it fails. If the target block has been issued, the hash value of the block is read and the winner determination algorithm using the random source is called. The winner determination algorithm operates in a deterministic manner once the random source is determined. In this implementation, the winner is determined as follows.

1. [0, 1, ... , 참가자 수 - 1] 에 속한 각 정수에 랜덤 해시 값(Xi)을 할당한다. (키, 값) 쌍에서 키가 정수에 해당하고, 값이 해시에 해당한다.1. Assign a random hash value (X i ) to each integer belonging to [0, 1, ..., number of participants - 1]. In a (key, value) pair, the key corresponds to an integer and the value corresponds to a hash.

2. 1의 Xi 는 다음과 같이 계산된다. 추첨 행사 등록 시 할당된 랜덤 키와 타겟 블록 해시를 각 SHA256-HMAC의 키와 데이터로 사용하여 계산된 값을 Y라 하자. Y를 문자열로 변환한 값의 마지막에 정수 값의 인덱스(i)를 이어 붙인(concatenated) 값을 SHA256의 입력으로 사용하여 계산된 해시 값이 Xi 에 할당된다.2. X i of 1 is calculated as: Let Y be the value calculated using the random key and target block hash assigned at the time of registering the lottery event as the key and data of each SHA256-HMAC. The hash value calculated by using the value obtained by concatenating the index (i) of an integer value at the end of the value converted to a string of Y as the input of SHA256 is assigned to X i .

3. 할당된 (해시) 값을 기준으로 정렬한다. 그리고 그 결과를 배열에 저장한다.3. Sort by assigned (hash) value. And store the result in an array.

4. 배열의 인덱스 순서 번호로 당첨자 순위를 가려낸다. 예를 들어 당첨자 수가 2명일 경우, 첫번째 인덱스 번호가 1등, 두번째 인덱스 번호가 2등이 된다.4. Determine the ranking of the winner by the index sequence number of the array. For example, if the number of winners is 2, the first index number becomes 1st place, and the second index number becomes 2nd place.

5. 참가자들은 초기에 참가한 순서대로 번호가 할당된다.5. Participants will be assigned numbers in the order in which they initially entered.

위 방식으로 당첨자가 결정되면 스마트 컨트랙트는 추첨 행사의 당첨자 필드에 당첨자를 기록한다.When the winner is determined in the above way, the smart contract records the winner in the winner field of the lottery event.

check 트랜잭션은 또한 추후 검증을 위한 검증 키를 생성한다. The check transaction also generates a verification key for later verification.

도 3은 검증을 위해 사용되는 검증 키 도출 과정의 블록 구성도이다.3 is a block diagram of a verification key derivation process used for verification.

도 3을 참조하면, 랜덤 소스와 추첨 정보의 무결성을 위해 타겟 블록과 직전 3개 블록의 해시 값과 추첨 등록 당시 제공된 랜덤 키를 HMAC 함수로 만든 값과 추첨 정보를 SHA256 함수로 만든 해시 값을 이어 붙인(concatenated) 값에 대한 해시를 만들어낸다. 그리고 이렇게 생성된 검증 키(VerifiableRandomKey)는 추첨 정보의 검증 키 필드에 기록되고 verify 트랜잭션에 의해 사용된다.Referring to FIG. 3, for the integrity of the random source and lottery information, the hash value of the target block and the previous three blocks, the random key provided at the time of lottery registration, the HMAC function, and the lottery information are connected to the hash value created by the SHA256 function. Generates a hash of the concatenated values. And the verification key (VerifiableRandomKey) generated in this way is recorded in the verification key field of the lottery information and used by the verify transaction.

verify 트랜잭션은 기록된 추첨 정보의 무결성과 추첨 결과를 재현하여 당첨자가 일치하는지 여부를 검증한다.The verify transaction verifies whether the winners match by recreating the integrity of the recorded lottery information and the lottery results.

도 3의 검증 키 도출 과정을 따라 검증 키를 생성하고 check 트랜잭션으로 기록된 검증 키를 비교한다.A verification key is generated according to the verification key derivation process of FIG. 3 and the verification key recorded in the check transaction is compared.

검증 키는 최종적으로 HMAC과 SHA256의 결과 문자열을 연결하여 구성됨. HMAC의 키로는 초기의 랜덤 키를 사용하고, 해시 함수는 SHA256, 메시지로 사용될 데이터는 타겟 블록과 직전 3개 해시일 수 있다. Lottery information에 속하는 내용은 추첨 행사의 이름, 행사 등록 시 사용된 랜덤 키, 발행일, 마감일, 등록일, 당첨자 수, 당첨자 명단, 참가자 수, 참가자 명단, 타겟 블록 번호, 당첨자 결정 알고리즘의 소스 코드가 포함된다.The verification key is finally constructed by concatenating the resulting string of HMAC and SHA256. The initial random key is used as the HMAC key, the hash function is SHA256, and the data to be used as a message can be the target block and the previous three hashes. The contents belonging to Lottery information include the name of the lottery event, the random key used when registering for the event, the issue date, the deadline date, the registration date, the number of winners, the list of winners, the number of participants, the list of participants, the target block number, and the source code of the winner determination algorithm. .

본 발명의 실시예에 따른 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다. The operation of the method according to the embodiment of the present invention can be implemented as a computer readable program or code on a computer readable recording medium. A computer-readable recording medium includes all types of recording devices in which data that can be read by a computer system is stored. In addition, computer-readable recording media may be distributed to computer systems connected through a network to store and execute computer-readable programs or codes in a distributed manner.

또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.In addition, the computer-readable recording medium may include hardware devices specially configured to store and execute program instructions, such as ROM, RAM, and flash memory. The program command may include high-level language codes that can be executed by a computer using an interpreter or the like as well as machine code generated by a compiler.

본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다. Although some aspects of the present invention have been described in the context of an apparatus, it may also represent a description according to a corresponding method, where a block or apparatus corresponds to a method step or feature of a method step. Similarly, aspects described in the context of a method may also be represented by a corresponding block or item or a corresponding feature of a device. Some or all of the method steps may be performed by (or using) a hardware device such as, for example, a microprocessor, programmable computer, or electronic circuitry. In some embodiments, one or more of the most important method steps may be performed by such an apparatus.

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.In embodiments, a programmable logic device (eg, a field programmable gate array) may be used to perform some or all of the functions of the methods described herein. In embodiments, a field programmable gate array may operate in conjunction with a microprocessor to perform one of the methods described herein. Generally, methods are preferably performed by some hardware device.

이상 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to preferred embodiments of the present invention, those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention described in the claims below. You will understand that you can.

Claims (18)

블록체인 네트워크 내 스마트 컨트랙트의 동작에 의해 참가자 및 주최자 간의 검증 가능한 추첨을 수행하는 방법에 있어서,
상기 블록체인 네트워크에 의하여 실행되는 Open 트랜잭션에 의해 상기 스마트 컨트랙트를 호출하여 주최자로부터 입력된 추첨 행사의 추첨 정보를 추첨 네트워크 상에 등록하는 단계;
상기 블록체인 네트워크에 의하여 실행되는 Subscribe 트랜잭션에 의해 상기 스마트 컨트랙트를 호출하여 참가자를 상기 추첨 행사의 참가자 목록에 추가하는 단계;
상기 블록체인 네트워크에 의하여 실행되는 Check 트랜잭션에 의해 상기 스마트 컨트랙트를 호출하여, 현재 시간이 발표일에 도달한 경우 사전 발행된 타겟 블록의 해시 값을 랜덤 소스로 사용하는 당첨자 결정 알고리즘에 의해 당첨자 및 당첨 결과를 도출하는 단계;
상기 블록체인 네트워크에 의하여 실행되는 상기 Check 트랜잭션에 의해 상기 당첨자를 상기 추첨 행사의 당첨자 필드에 기록하는 단계;
상기 블록체인 네트워크에 의하여 실행되는 상기 Check 트랜잭션에 의해 상기 추첨 정보의 무결성을 검증하기 위한 제1 검증 키를 생성하는 단계; 및
상기 블록체인 네트워크에 의하여 실행되는 Verify 트랜잭션에 의해 상기 스마트 컨트랙트를 호출하여, 상기 추첨 네트워크 상에 등록된 상기 추첨 정보를 이용하여 제2 검증 키를 생성하고, 상기 제2 검증 키를 상기 제1 검증 키와 비교함으로써 상기 당첨 결과의 무결성을 검증하는 단계를 포함하는, 검증 가능한 추첨을 위한 방법.
A method for performing a verifiable lottery between participants and organizers by the operation of a smart contract in a blockchain network,
Registering lottery information of a lottery event input from an organizer on a lottery network by calling the smart contract by an open transaction executed by the blockchain network;
Adding a participant to a participant list of the lottery event by calling the smart contract by a Subscribe transaction executed by the blockchain network;
Winners and winning results by a winner determination algorithm that uses the hash value of a pre-issued target block as a random source when the current time reaches the announcement date by calling the smart contract by the Check transaction executed by the blockchain network deriving;
recording the winner in a winner field of the lottery event by the Check transaction executed by the blockchain network;
generating a first verification key for verifying integrity of the lottery information by the check transaction executed by the blockchain network; and
The smart contract is called by the Verify transaction executed by the blockchain network to generate a second verification key using the lottery information registered on the lottery network, and the second verification key is used to generate the first verification key. and verifying the integrity of the winning result by comparing it with a key.
청구항 1에 있어서,
상기 추첨 행사의 추첨 정보를 추첨 네트워크 상에 등록하는 단계에서는,
상기 추첨 행사의 이름, 발행일, 마감일, 상기 발표일, 타겟 블록 번호, 참가자 수, 당첨자 수, 랜덤 키 및 참가자 이름 중 적어도 하나의 상기 추첨 정보를 상기 추첨 네트워크 상에 등록하는 것을 포함하되,
상기 타겟 블록 번호는 비트 코인 블록 체인의 블록 생성 속도를 산출하여 상기 발표일에 인접한 타겟 블록의 번호를 예측한 것이고,
상기 랜덤 키는 적어도 하나의 추첨 행사를 구별하기 위한 것인, 검증 가능한 추첨을 위한 방법.
The method of claim 1,
In the step of registering the lottery information of the lottery event on the lottery network,
Registering the lottery information of at least one of the name of the lottery event, the issue date, the deadline, the announcement date, the target block number, the number of participants, the number of winners, a random key, and a participant name on the lottery network,
The target block number is a prediction of the target block number adjacent to the announcement date by calculating the block generation speed of the Bitcoin block chain,
wherein the random key is for distinguishing at least one lottery event.
청구항 1에 있어서,
상기 추첨 행사의 참가자 목록에 추가하는 단계는,
상기 추첨 네트워크 상에 등록된 참가자를 CA 데이터 베이스에 등록하는 단계;
상기 CA 데이터 베이스로부터 공개 키를 할당 받는 단계; 및
상기 공개 키에 따른 해시 값을 통해 상기 참가자들의 신원을 확인하여 구분하는 단계를 포함하는, 검증 가능한 추첨을 위한 방법.
The method of claim 1,
The step of adding to the list of participants of the lottery event,
registering participants registered on the lottery network in a CA database;
receiving a public key from the CA database; and
A method for a verifiable lottery, comprising identifying and distinguishing the identities of the participants through a hash value according to the public key.
삭제delete 청구항 1에 있어서,
상기 당첨자 결정 알고리즘은,
참가자에게 개별 부여된 각 정수마다 랜덤 해시 값을 할당하고,
상기 랜덤 해시 값을 기준으로 상기 정수를 재정렬하여, 재정렬된 순서에 따라 당첨자를 결정하는, 검증 가능한 추첨을 위한 방법.
The method of claim 1,
The winner determination algorithm,
A random hash value is assigned to each integer individually given to the participant,
A method for a verifiable lottery, wherein the integers are rearranged based on the random hash value, and a winner is determined according to the rearranged order.
청구항 5에 있어서,
상기 랜덤 해시 값은,
랜덤 키 및 상기 타겟 블록의 해시 값을 SHA256-HMAC의 키와 데이터로 사용하여 임시 값을 산출하고,
상기 임시 값을 문자열로 변환한 후 상기 문자열의 끝에 정수 인덱스를 결합한 값을 SHA256의 입력으로 사용하여 산출된 해시 값인, 검증 가능한 추첨을 위한 방법.
The method of claim 5,
The random hash value,
A temporary value is calculated using the random key and the hash value of the target block as the key and data of SHA256-HMAC,
A method for a verifiable lottery, which is a hash value calculated by converting the temporary value into a string and using a value obtained by combining an integer index at the end of the string as an input of SHA256.
청구항 1에 있어서,
상기 제1 검증 키는,
상기 타겟 블록 및 상기 타겟 블록의 직전 블록들의 해시 값 및 랜덤 키를 HMAC 함수로 만든 값 및 추첨 정보를 SHA256 함수로 만든 해시 값을 결합하여 생성된 것인, 검증 가능한 추첨을 위한 방법.
The method of claim 1,
The first verification key,
The method for a verifiable lottery, which is generated by combining the hash value of the target block and the blocks immediately preceding the target block, the random key with the HMAC function, and the lottery information with the SHA256 function.
청구항 7에 있어서,
상기 제2 검증 키는,
상기 추첨 네트워크 상에 등록된 상기 추첨 정보를 바탕으로, 상기 제1 검증 키와 동일하게 산출되는, 검증 가능한 추첨을 위한 방법.
The method of claim 7,
The second verification key,
A method for a verifiable lottery that is calculated identically to the first verification key based on the lottery information registered on the lottery network.
청구항 1에 있어서,
상기 블록체인 네트워크는 허가형 블록체인(Permissioned Blockchain)인, 검증 가능한 추첨을 위한 방법.
The method of claim 1,
The method for a verifiable lottery, wherein the blockchain network is a permissioned blockchain.
블록체인 네트워크 내 스마트 컨트랙트의 동작에 의해 참가자 및 주최자 간의 검증 가능한 추첨을 수행하는 장치에 있어서,
상기 스마트 컨트랙트를 호출하는 적어도 하나의 트랜잭션 명령을 저장하는 메모리(memory); 및
상기 메모리에 저장된 적어도 하나의 트랜잭션 명령을 실행하는 프로세서(processor)를 포함하되,
상기 적어도 하나의 트랜잭션 명령은,
주최자로부터 입력된 추첨 행사의 추첨 정보를 추첨 네트워크 상에 등록하도록 하는 명령,
참가자를 상기 추첨 행사의 참가자 목록에 추가하도록 하는 명령,
현재 시간이 발표일에 도달한 경우, 사전 발행된 타겟 블록의 해시 값을 랜덤 소스로 사용하는 당첨자 결정 알고리즘을 실행함으로써 당첨자 및 당첨 결과를 도출하도록 하는 명령,
상기 당첨자를 상기 추첨 행사의 당첨자 필드에 기록하도록 하는 명령,
상기 추첨 정보의 무결성을 검증하기 위한 제1 검증 키를 생성하도록 하는 명령, 및
상기 추첨 네트워크 상에 등록된 상기 추첨 정보를 이용하여 제2 검증 키를 생성하고, 상기 제2 검증 키를 상기 제1 검증 키와 비교함으로써 상기 당첨 결과의 무결성을 검증하도록 하는 명령을 포함하는, 검증 가능한 추첨을 위한 장치.
A device for performing a verifiable lottery between participants and organizers by the operation of a smart contract in a blockchain network,
a memory for storing at least one transaction command calling the smart contract; and
A processor executing at least one transaction instruction stored in the memory;
The at least one transaction command,
A command to register the lottery information of the lottery event entered from the organizer on the lottery network;
instructions to add a participant to a list of participants in said drawing event;
When the current time reaches the announcement date, a command to derive a winner and a winning result by executing a winner determination algorithm using the hash value of a pre-issued target block as a random source;
instructions to record the winner in a winner field of the lottery event;
A command to generate a first verification key for verifying the integrity of the lottery information, and
And verifying the integrity of the winning result by generating a second verification key using the lottery information registered on the lottery network and comparing the second verification key with the first verification key. device for possible lottery.
청구항 10에 있어서,
상기 추첨 행사의 추첨 정보를 추첨 네트워크 상에 등록하도록 하는 명령에서는,
상기 추첨 행사의 이름, 발행일, 마감일, 상기 발표일, 타겟 블록 번호, 참가자 수, 당첨자 수, 랜덤 키 및 참가자 이름 중 적어도 하나의 상기 추첨 정보를 상기 추첨 네트워크 상에 등록하는 것을 포함하되,
상기 타겟 블록 번호는 비트 코인 블록 체인의 블록 생성 속도를 산출하여 상기 발표일에 인접한 타겟 블록의 번호를 예측한 것이고,
상기 랜덤 키는 적어도 하나의 추첨 행사를 구별하기 위한 것인, 검증 가능한 추첨을 위한 장치.
The method of claim 10,
In the command to register the lottery information of the lottery event on the lottery network,
Registering the lottery information of at least one of the name of the lottery event, the issue date, the deadline, the announcement date, the target block number, the number of participants, the number of winners, a random key, and a participant name on the lottery network,
The target block number is a prediction of the target block number adjacent to the announcement date by calculating the block generation speed of the Bitcoin block chain,
wherein the random key is for distinguishing at least one lottery event.
청구항 10에 있어서,
상기 추첨 행사의 참가자 목록에 추가하도록 하는 명령은,
상기 추첨 네트워크 상에 등록된 참가자를 CA 데이터 베이스에 등록하도록 하는 명령,
상기 CA 데이터 베이스로부터 공개 키를 할당 받도록 하는 명령, 및
상기 공개 키에 따른 해시 값을 통해 상기 참가자들의 신원을 확인하여 구분하도록 하는 명령을 포함하는, 검증 가능한 추첨을 위한 장치.
The method of claim 10,
The command to add to the list of participants of the lottery event,
instructions for registering participants registered on the lottery network in a CA database;
A command to assign a public key from the CA database; and
An apparatus for verifying a lottery, comprising a command for identifying and distinguishing the identities of the participants through a hash value according to the public key.
삭제delete 청구항 10에 있어서,
상기 당첨자 결정 알고리즘은,
참가자에게 개별 부여된 각 정수마다 랜덤 해시 값을 할당하고,
상기 랜덤 해시 값을 기준으로 상기 정수를 재정렬하여, 재정렬된 순서에 따라 당첨자를 결정하는, 검증 가능한 추첨을 위한 장치.
The method of claim 10,
The winner determination algorithm,
A random hash value is assigned to each integer individually given to the participant,
An apparatus for a verifiable lottery, wherein the integers are rearranged based on the random hash value, and a winner is determined according to the rearranged order.
청구항 14에 있어서,
상기 랜덤 해시 값은,
랜덤 키 및 상기 타겟 블록의 해시 값을 SHA256-HMAC의 키와 데이터로 사용하여 임시 값을 산출하고,
상기 임시 값을 문자열로 변환한 후 상기 문자열의 끝에 정수 인덱스를 결합한 값을 SHA256의 입력으로 사용하여 산출된 해시 값인, 검증 가능한 추첨을 위한 장치.
The method of claim 14,
The random hash value,
A temporary value is calculated using the random key and the hash value of the target block as the key and data of SHA256-HMAC,
Apparatus for verifiable lottery, which is a hash value calculated by converting the temporary value into a string and then using a value obtained by combining an integer index at the end of the string as an input of SHA256.
청구항 10에 있어서,
상기 제1 검증 키는,
상기 타겟 블록 및 상기 타겟 블록의 직전 블록들의 해시 값 및 랜덤 키를 HMAC 함수로 만든 값 및 추첨 정보를 SHA256 함수로 만든 해시 값을 결합하여 생성된 것인, 검증 가능한 추첨을 위한 장치.
The method of claim 10,
The first verification key,
Apparatus for a verifiable lottery, which is generated by combining the hash value of the target block and the blocks immediately preceding the target block, the random key with the HMAC function, and the lottery information with the SHA256 function.
청구항 16에 있어서,
상기 제2 검증 키는,
상기 추첨 네트워크 상에 등록된 상기 추첨 정보를 바탕으로, 상기 제1 검증 키와 동일하게 산출되는, 검증 가능한 추첨을 위한 장치.
The method of claim 16
The second verification key,
An apparatus for a verifiable lottery that is calculated identically to the first verification key based on the lottery information registered on the lottery network.
청구항 10에 있어서,
상기 블록체인 네트워크는 허가형 블록체인(Permissioned Blockchain)인, 검증 가능한 추첨을 위한 장치.
The method of claim 10,
The blockchain network is a permissioned blockchain, a device for a verifiable lottery.
KR1020170170038A 2017-12-12 2017-12-12 Apparatus and Methods for Verifiable Lottery KR102525157B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170170038A KR102525157B1 (en) 2017-12-12 2017-12-12 Apparatus and Methods for Verifiable Lottery

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170170038A KR102525157B1 (en) 2017-12-12 2017-12-12 Apparatus and Methods for Verifiable Lottery

Publications (2)

Publication Number Publication Date
KR20190078668A KR20190078668A (en) 2019-07-05
KR102525157B1 true KR102525157B1 (en) 2023-04-24

Family

ID=67225311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170170038A KR102525157B1 (en) 2017-12-12 2017-12-12 Apparatus and Methods for Verifiable Lottery

Country Status (1)

Country Link
KR (1) KR102525157B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102310941B1 (en) * 2019-07-26 2021-10-12 박상준 Open confinement drawing service method based on multi-party confidentiality using blockchain technology
KR102262047B1 (en) * 2019-08-16 2021-06-09 서강대학교 산학협력단 Prize-winning event management system using blockchain network and method thereof
CN110633983A (en) * 2019-09-05 2019-12-31 腾讯科技(深圳)有限公司 Target event execution method and device based on block chain
KR102248890B1 (en) * 2019-11-15 2021-05-06 정기영 System and method for lottery based on public blockchain and verification thereof
KR102402517B1 (en) * 2020-09-09 2022-05-27 김성욱 Method for providing blockchain based lottery game service with merchandising prize

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017157910A (en) * 2016-02-29 2017-09-07 日本電気株式会社 Electronic lottery system and electronic lottery method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101784219B1 (en) * 2016-06-15 2017-10-12 주식회사 코인플러그 Financial institution document verification system that is based on the block chain

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017157910A (en) * 2016-02-29 2017-09-07 日本電気株式会社 Electronic lottery system and electronic lottery method

Also Published As

Publication number Publication date
KR20190078668A (en) 2019-07-05

Similar Documents

Publication Publication Date Title
KR102525157B1 (en) Apparatus and Methods for Verifiable Lottery
Belotti et al. A vademecum on blockchain technologies: When, which, and how
Lashkari et al. A comprehensive review of blockchain consensus mechanisms
US20220358491A1 (en) Implementing logic gate functionality using a blockchain
Yakovenko Solana: A new architecture for a high performance blockchain v0. 8.13
Borkowski et al. DeXTT: Deterministic cross-blockchain token transfers
JP6986519B2 (en) Distributed transaction propagation and validation system
TWI797512B (en) Agent-based turing complete transactions integrating feedback within a blockchain system
Allombert et al. Introduction to the tezos blockchain
Wahab et al. Survey of consensus protocols
Sonnino et al. Replay attacks and defenses against cross-shard consensus in sharded distributed ledgers
JP2020532169A (en) Pseudo-random number generation in blockchain
Nelaturu et al. On public crowdsource-based mechanisms for a decentralized blockchain oracle
Singh et al. A survey and taxonomy of consensus protocols for blockchains
KR102187294B1 (en) System and method for providing secret electronic voting service based on blockchain
Alzahrani et al. A new product anti‐counterfeiting blockchain using a truly decentralized dynamic consensus protocol
Francati et al. Audita: A blockchain-based auditing framework for off-chain storage
CN108831001B (en) Block chain-based node random selection method, system, node and electronic equipment
CN111488134B (en) Public random number generation method and device based on block chain
Avizheh et al. Verifiable computation using smart contracts
Alp et al. Rethinking general-purpose decentralized computing
Tran et al. Blockchain in a nutshell
Mourouzis et al. Introduction to decentralization and smart contracts
Cachin et al. Stateful multi-client verifiable computation
KR102304954B1 (en) Peer node, method for processing information executed on peer node and blockchain platform system

Legal Events

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