KR20210123393A - 의사-랜덤 데이터 생성을 위한 컴퓨터 구현된 방법 및 시스템 - Google Patents
의사-랜덤 데이터 생성을 위한 컴퓨터 구현된 방법 및 시스템 Download PDFInfo
- Publication number
- KR20210123393A KR20210123393A KR1020217028765A KR20217028765A KR20210123393A KR 20210123393 A KR20210123393 A KR 20210123393A KR 1020217028765 A KR1020217028765 A KR 1020217028765A KR 20217028765 A KR20217028765 A KR 20217028765A KR 20210123393 A KR20210123393 A KR 20210123393A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- participants
- digital signature
- item
- data item
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000013515 script Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 49
- 238000003860 storage Methods 0.000 claims description 14
- 230000008901 benefit Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000000977 initiatory effect Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H04L2209/38—
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
본 개시는 일반적으로 의사-랜덤 데이터 생성(pseudo-random data generation)에 관한 것이고, 더 구체적으로 의사-랜덤 번호(pseudo-random number) 생성에 관한 것이다. 본 개시는 특히, 블록체인 트랜잭션을 위한 의사-랜덤 번호 생성에서의 사용에 적합하지만, 이에 제한되지 않는다.
본 문서에서, '블록체인'이란 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledgers)을 포함하는 것으로 사용한다. 이는 컨센서스-기반의 블록체인(consensus-based blockchain) 및 트랜잭션-체인 기술, 허가된 및 허가되지 않은 원장, 공유 원장 및 이의 변형을 포함한다. 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이지만, 다른 블록체인 구현이 제안되고 개발되었다. 비트코인이 본원에서 편의 및 예시의 목적으로 언급될 수 있지만, 본 개시가 비트코인 블록체인을 통해 사용하는 것으로 제한되지는 않으며, 대안적인 블록체인 구현 및 프로토콜이 본 개시의 범주 내에 속한다는 점이 유의되어야 한다. "사용자"라는 용어는 본원에서 인간 또는 프로세서 기반의 리소스를 지칭할 수 있다.
블록체인은 결국 트랜잭션으로 구성되는 블록으로 구성되는 컴퓨터-기반의 탈중앙화된(decentralised) 분산 시스템으로 구현된 피어 투 피어(peer-to-peer) 전자 원장이다. 각 트랜잭션은 블록체인 시스템에서 참가자 간의 디지털 자산의 제어의 송신을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각 블록은 블록이 그의 시작 이래로 블록체인에 기록된 모든 트랜잭션의 영구적이고 변경할 수 없는 레코드를 생성하기 위해 함께 연쇄되도록 이전 블록의 해시(hash)를 포함한다. 트랜잭션은 그 입력 및 출력에 내재된(embedded) 스크립트로 알려진 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 지정한다. 비트코인 플랫폼에 대해, 이들 스크립트는 스택-기반의 스크립팅 언어(stack-based scripting language)를 사용하여 기록된다.
트랜잭션이 블록체인에 기록되게 하기 위해, 이는 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각 트랜잭션이 유효하고, 무효한 트랜잭션이 네트워크로부터 거부됨을 보장하기 위한 작업을 수행한다. 노드 상에 설치된 소프트웨어 클라이언트는 그의 잠금 및 잠금 해제 스크립트를 실행함으로써, 소비되지 않은 트랜잭션(unspent transaction, UTXO)에 대해 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가되는 경우, 트랜잭션은 유효하고 트랜잭션은 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되게 하기 위해, 이는 i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 - 트랜잭션이 유효성 검증되는 경우, 노드는 네트워크에서 다른 노드에 이를 중계(relay)함 -; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하며; 및 iii) 채굴, 즉 과거 트랜잭션의 공공 원장에 추가되어야 한다.
암호 화폐 구현의 사용에 대해 블록체인 기술이 가장 널리 알려져 있지만, 디지털 기업가는 신규 시스템을 구현하기 위해 비트코인이 기초로 하는 암호 화폐 보안 시스템 및 블록체인 상에 저장될 수 있는 데이터의 사용을 조사하기 시작하였다. 블록체인이 암호 화폐의 영역으로 제한되지 않는 자동화된 작업 및 프로세스에 대해 사용될 수 있는 경우, 이는 매우 유리할 것이다. 이러한 해결책은 블록체인의 장점(예를 들어, 이벤트의 영구적인 변조 방지 레코드, 분산 처리 등)을 이용할 수 있으면서, 그의 응용에서 더욱 범용성이 있을 것이다.
글로벌 복권 산업은 특히, 인터넷 및 모바일 디바이스 애플리케이션의 개발 덕에 지속적으로 성장하고 있다.
특히, 복권을 위한 온라인 플랫폼에서 사용자와 관련된 주요 문제는 서비스 제공자에서의 공정성 및 신뢰에 관련된다. 온라인 복권이 제3 파티에 의해 구성될 때, 참가자는 당첨금(winning prize)이 존재하는지 또는 복권 그 자체에 어떠한 조작도 없는지를 확신할 수 없다. 이러한 복권에서, 사용자는 당첨자를 선택하는 데 사용되는 프로세스가 랜덤이고 안전함을 보장하지 못한다.
이들 문제 중 제1 문제 - 당첨 자금의 존재 -에 대한 하나의 가능한 해결책은 블록체인에 의해 제공된다. 복권이 블록체인 상에서 멀티-파티 트랜잭션(multi-party transaction)으로서 구성되는 경우, 모든 참가자는 잭팟(jackpot)이 존재함을 검증할 수 있으며, 블록체인의 성질은 분산된 공공 원장에 대한 그 사실의 불변의 기록이 존재할 것이라는 것을 의미한다. 이 블록체인의 사용은 또한, 일부 다른 문제를 해결하며, 가령 당첨금의 즉각적인 상환, 국경을 넘는 무제한 참가 및 복권에 수반된 자금을 모니터링하기 위한 능력을 허용한다.
이는 그 후, 블록체인-기반 복권에서 당첨자가 선택되는 무작위성(randomness) 및 보안을 보장하기 위한 방식을 찾는 것을 유지한다. 이러한 애플리케이션에 대한 플랫폼으로서 블록체인을 사용함으로써 온라인 복권에 내재된 두 가지 핵심 문제를 모두 회피하는 것이 바람직할 것이다.
블록체인-기반 복권의 가장 최근 예시 중, 이더리움 블록체인 상에서 동작하는, K. Farris, S. Ormond-Smith, L. Hills, Quanta Whitepaper (2018)에 개시된 퀀타(Quanta) - https://www.quantaplc.im/Quanta.pdf -, 및 N. Parkhomenko, K. Katsev, TrueFlip Whitepaper (2016)에 개시된 트루플립(TrueFlip) - https://trueflip.io/TrueFlip%C2%A9%20Whitepaper.pdf?new -을 언급할 가치가 있다. 트루플립 프로토콜에서의 무작위성은 당첨 번호를 생성하기 위한 (오픈-소스) 알고리즘에 통합된, 확인된 블록 해시를 사용함으로써 생성된다.
당첨 번호를 랜덤으로 생성하는 데 사용되는 오픈-소스 코드와 같은 탈중앙화 및 투명성 요소의 존재에도 불구하고, 다수의 프로세스는 트루플립 프로토콜을 발명하였고 다수의 오프-체인 트랜잭션(off-chain transactions)을 수반하는 엔티티에 의해 제어된다.
일반적으로, 아직 해결되지 않은 주요 문제 중 하나는 블록체인 작업 및 스크립트와 호환 가능한, 신뢰할 수 있고 검증된 엔트로피의 소스 및 암호로-안전한 랜덤 번호 생성기를 찾는 것이다.
P. Strateman, New Opcodes (2016)에 개시된 제안된 'OP_DETERMINISTICRANDOM' - https://www.elementsproject.org/elements/opcodes/ -과 같은 새로운 opcode가 스크립트 내에서 랜덤 번호를 생성하는 데 사용할 수 있음이 가능하다. 현재 제시된 이들 해결책은 문제를 제거하는 것이 아닌 좋은 행동을 장려하는 것이며, 상기 인센티브는 조정 가능하다.
하지만, 이들 제안된 해결책의 특정 기술 문제를 제쳐 두고, 이들이 기존의 비트코인 스크립트 라이브러리로의 새로운 opcode의 도입을 요구한다는 점에서 이들 모두 근본적으로 문제가 있다. 이는 복권 및 게임 모두에 대한 플랫폼으로서 이를 사용하는 것에 대한 정당성을 저해하는 기본 블록체인의 공격-표면(attack-surface)을 증가시키기 때문에 바람직하지 않다.
따라서, 블록체인 상에서 사용하기 위한 랜덤 번호를 생성하기 위한 방법을 제공하는 것이 바람직할 수 있다.
이러한 개선된 해결책이 이제 고안되었다.
따라서, 본 개시에 따라 첨부된 청구 범위로 정의된 방법이 제공된다.
본 개시에 따라, 데이터를 의사-랜덤으로 생성하는 방법이 제공될 수 있으며, 방법은:
복수의 제1 참가자의 각각으로부터 적어도 하나의 각각의 제1 데이터 항목을 포함하는 제1 데이터를 수신하는 단계;
제2 데이터를 생성하기 위해 복수의 상기 제1 데이터 항목을 결합하는 단계; 및
제3 데이터를 생성하기 위해 상기 제2 데이터의 적어도 일부에 적어도 하나의 단방향 함수를 적용하는 단계 - 그 또는 각 상기 단방향 함수는 입력 데이터를 수신하고 상기 입력 데이터를 기초로 출력 데이터를 생성하도록 적응되고, 상기 입력 데이터는 상기 출력 데이터 및 상기 단방향 함수로부터 추론 가능(deducible)하지 않음 -를 포함한다.
복수의 제1 참가자로부터의 데이터에 적어도 하나의 단방향 함수를 적용함으로써, 이는 제3 데이터가 제1 참가자 중 어느 하나에 의해 예측될 수 없고 그러므로 의사-랜덤인 이점을 제공한다. 블록체인 트랜잭션의 경우, 이는 상당한 계산 오버헤드 없이 의사-랜덤 데이터/번호 생성을 가능하게 하는 추가적인 이점을 제공한다.
상기 제1 데이터는 상기 제1 참가자로부터 암호화된 형태로 수신될 수 있다.
이는 안전한 통신을 제공함으로써 보안을 개선하는 이점을 제공한다.
방법은 복수의 상기 제1 참가자의 각각으로부터 적어도 하나의 각각의 제4 데이터 항목을 포함하는 제4 데이터를 수신하는 단계를 더 포함할 수 있으며, 그 또는 각 상기 제4 데이터 항목은 상기 제1 참가자에 대응하는 그 또는 각 각각의 상기 제1 데이터 항목에 적어도 하나의 단방향 함수를 적용함으로써 생성된다.
이는 제1 데이터 항목이 변경되지 않았음을 검증함으로써 보안이 개선되는 것을 가능하게 하는 이점을 제공한다.
방법은 상기 제4 데이터를 복수의 상기 제1 참가자에게 전송하는 단계를 더 포함할 수 있다.
이는 상기 제1 참가자가 상기 제1 데이터가 변경되지 않았음을 독립적으로 검사하는 것을 가능하게 하는 이점을 제공한다.
적어도 하나의 상기 단방향 함수는 해시 함수일 수 있다.
적어도 하나의 상기 단방향 함수는 암호화 시스템의 각각의 공개-개인 키 쌍의 공개 및 개인 키와 관련될 수 있다.
암호화 시스템은 타원 곡선 암호화 시스템일 수 있다.
블록체인 트랜잭션의 경우, 이는 다른 목적으로 이용 가능한 해시 함수가 쉽게 사용되는 것을 가능하게 하는 이점을 제공한다.
적어도 하나의 상기 제1 데이터 항목은 각각의 제1 디지털 서명의 적어도 일부를 포함할 수 있다.
이는 디지털 서명 알고리즘에 의한 랜덤 정수 생성이 사용되는 것을 가능하게 하는 이점을 제공하며, 그로 인해 또한, 위에서 정의된 방법에 의해 생성된 무작위성에 부가하여 상기 제1 데이터 항목의 생성에 무작위성이 추가되는 것을 가능하게 한다.
적어도 하나의 상기 제1 데이터 항목은 개인 키 및 임시 키를 기초로 하는 각각의 제1 디지털 서명의 적어도 일부를 포함할 수 있다.
방법은 복수의 상기 제1 참가자의 각각으로부터 적어도 하나의 각각의 제2 디지털 서명을 수신하는 단계를 더 포함할 수 있으며, 상기 제2 디지털 서명은 대응하는 상기 제1 디지털 서명과 동일한 개인 키로 서명된다.
이는 동일한 개인 키를 사용하여 제1 및 제2 디지털 서명 모두가 서명되었음의 검증이 수행되는 것을 가능하게 하는 이점을 제공하며, 그로 인해 제1 데이터가 변경되지 않았음의 검증을 가능하게 한다. 또한, 블록체인 트랜잭션의 경우 스크립트에서 디지털 서명 알고리즘을 사용하여 서명 검증이 쉽게 수행될 수 있다.
방법은 복수의 상기 제1 참가자의 각각으로부터 각각의 제5 데이터 항목을 포함하는 제5 데이터를 수신하는 단계를 더 포함할 수 있으며, 상기 제5 데이터 항목은 대응하는 상기 제1 디지털 서명의 일부이고, 상기 제1 디지털 서명은 상기 제5 데이터 항목을 대응하는 상기 제1 데이터 항목과 결합함으로써 구성된다.
방법은 상기 제5 데이터를 복수의 상기 제1 참가자에게 전송하는 단계를 더 포함할 수 있다.
이는 각 제1 참가자가 상기 제1 데이터 항목이 변경되지 않았음을 독립적으로 검사하는 것을 가능하게 하는 이점을 제공한다.
적어도 하나의 상기 제5 데이터 항목은 임시 키를 기초로 각각의 제1 디지털 서명의 적어도 일부를 포함할 수 있다.
이는 블록체인 스크립트에서 디지털 서명 알고리즘에 의해 쉽게 생성되는 이점을 제공하고, 제1 데이터의 생성에 추가적인 무작위성을 추가함으로써 보안을 더욱 개선한다.
방법은 상기 제3 데이터의 생성에 이어서 상기 제1 데이터를 복수의 상기 제1 참가자에게 전송하는 단계를 더 포함할 수 있다.
이는 제3 데이터를 생성하기 위한 메커니즘이 검증되는 것을 가능하게 하는 이점을 제공한다.
제3 데이터는 상기 제1 데이터 항목을 포함하는 스크립트를 통해 상환 가능한 블록체인 트랜잭션의 일부를 형성할 수 있다.
이는 스크립트가 실행될 때 상기 제1 데이터 항목을 블록체인 상에 자동으로 공개하며, 그로 인해 제3 데이터의 생성의 프로세스가 자동으로 검증 가능한 이점을 제공한다.
상기 스크립트의 실행은 상기 제1 데이터 항목으로부터 상기 제3 데이터를 재생성할 수 있다.
이는 제3 데이터를 생성하는 프로세스의 효율적인 검증의 이점을 제공한다.
제3 데이터는 복수의 상기 단방향 함수를 통해 생성될 수 있다.
이는 보안을 개선하는 이점을 제공한다.
제3 데이터는 적어도 하나의 상기 단방향 함수의 반복된 적용을 통해 생성될 수 있다.
이는 보안을 개선하는 이점을 제공한다.
제3 데이터는 복수의 제2 참가자를 통해 생성될 수 있다.
이는 단일의 정직한 제2 참가자가 프로세스가 성공적으로 수행되는 것을 가능하게 하도록 충분한 무작위성을 제공하기 때문에 보안을 개선하는 이점을 제공한다.
방법은 상기 제3 데이터를 기초로 복수의 항목으로부터 항목을 선택하는 단계를 더 포함할 수 있다.
상기 선택은 암호화 시스템의 공개-개인 키 쌍의 공개 키를 선택하는 단계를 포함할 수 있으며, 적어도 하나의 상기 참가자는 상기 쌍의 개인 키에 대한 액세스를 갖는다.
본 개시는 또한, 시스템을 제공하며, 시스템은:
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템이 본원에서 서술된 컴퓨터-구현 방법의 임의의 실시예를 수행하게 하는 실행가능 명령어를 포함하는 메모리를 포함한다.
본 개시는 또한, 컴퓨터 시스템의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템이 본원에서 서술되는 컴퓨터-구현된 방법의 실시예를 적어도 수행하게 하는 실행가능 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 개시의 이들 및 다른 양상은 본원에서 설명되는 실시예로부터 명백해지며 이를 참조하여 설명될 것이다. 이제, 본 개시의 실시예가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 본 개시를 구현하는 방법을 사용하여 번호를 의사-랜덤으로 생성하기 위한 비트코인 스크립트이다.
도 2는 본 개시를 구현하는 블록체인 복권의 개시 트랜잭션이다.
도 3은 본 개시를 구현하는 블록체인 복권의 오라클 트랜잭션(oracle transaction)이다.
도 4는 본 개시의 추가적인 실시예의 블록체인 복권의 오라클 트랜잭션이다.
도 5는 본 개시를 구현하는 블록체인 복권의 당첨금 상환 트랜잭션이다.
도 6은 도 4의 오라클 트랜잭션에 의해 영향을 받은(encumbered) 자금을 상환하기 위한 비트코인 스크립트이다.
도 7은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 도시하는 개략도이다.
도 1은 본 개시를 구현하는 방법을 사용하여 번호를 의사-랜덤으로 생성하기 위한 비트코인 스크립트이다.
도 2는 본 개시를 구현하는 블록체인 복권의 개시 트랜잭션이다.
도 3은 본 개시를 구현하는 블록체인 복권의 오라클 트랜잭션(oracle transaction)이다.
도 4는 본 개시의 추가적인 실시예의 블록체인 복권의 오라클 트랜잭션이다.
도 5는 본 개시를 구현하는 블록체인 복권의 당첨금 상환 트랜잭션이다.
도 6은 도 4의 오라클 트랜잭션에 의해 영향을 받은(encumbered) 자금을 상환하기 위한 비트코인 스크립트이다.
도 7은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 도시하는 개략도이다.
블록체인에 대한 무작위성
운을 기초로 하는 게임 알고리즘을 비트코인 스크립트 내로 허용하기 위해 랜덤 프로세스를 블록체인에 통합하는 새로운 방법을 고안하는 것이 바람직할 수 있다. 이는 제시된 방법이 스크립트에서 생성되고 및 사용되는 랜덤 번호의 다음의 특성을 보장해야 함을 의미한다:
(1) 예측할 수 없음(Unpredictble) : 자금이 운-기반 이벤트에 커밋되기(committed) 전에 결과를 결정하는 데 사용되는 랜덤 번호가 예측할 수 없어야 한다.
(2) 결정성(Deterministic) : 생성된 랜덤 번호(들)는 초기 생성 이후에 항상 동일한 입력으로부터 재현 가능해야 한다.
(3) 검증 가능 : 모든 노드는 모든 노드가 생성된 번호(들)에 대해 협의하도록 선택된 랜덤 번호를 재현하고 검증할 수 있어야 한다.
이 응용에서 제안된 방법은 블록체인 상에서 랜덤 번호의 생성 시, 모든 위의 특성이 유지되는 것을 보장한다. "비트코인"이란 용어는 본원에서 비트코인 프로토콜로부터 도출된 프로토콜의 모든 변형을 포함하는 것으로 사용된다.
기본 개념
의사-랜덤 번호 생성기
일반적으로, 랜덤 번호는 두 개의 카테고리: 진정한-랜덤(truly-random) 및 의사-랜덤(pseudo-random)로 나뉜다. 구별해야 할 점은 진정한-무작위성은 달성하기가 매우 어렵고, 보통 자연적인 프로세스 또는 전기적인 잡음에 의존한다는 것이다.
대안적으로, 의사-무작위성은 의사-랜덤 번호 N k - k는 랜덤 번호 생성기의 기간임 -의 시퀀스를 생성하기 위한 알고리즘을 초기화하기 위해 단일의 높은-엔트로피 시드 값 V Seed (진정한-랜덤)를 사용함으로써 달성된다
대부분의 실제 응용에 대해, 의사 랜덤 번호 생성기는 특성이 적합한 경우에 사용된다. 블록체인 상에 통합된 무작위성의 경우, 의사 랜덤 번호 생성을 위한 메커니즘이 암호로 안전하다는 것이 또한 요구된다. 이는 보통의 정의에 의해 CSPRNG(cryptographically-secure pseudo-random number generator, 암호로 안전한 의사 랜덤 번호 생성기)로 지칭된다.
일반적으로, CSPRNG는 결정성이며, 그러므로 V Seed 를 아는 누구나 검증 가능한 번호의 시퀀스를 생성한다. 이러한 생성기는 두 가지 핵심 문제를 제외하고 블록체인 응용의 목적에 적합하다.
첫째, 긴 알고리즘은 알려진 CSPRNG로부터 비트코인 스크립팅 언어로 통합되어야 할 것이며, 이는 계산 오버헤드를 추가하고, 알고리즘에 의해 생성된 랜덤 번호의 함수에 대한 기회를 제한할 것이다.
덧붙여, 진정한-랜덤으로서 분류되기에 충분한 엔트로피를 갖는 시드 값 V Seed 를 제공할 수 있는 문제가 여전히 있다. 현재, 스크립트 내에서 이러한 시드를 생성하거나, 생성된 랜덤 번호가 예측할 수 없다는 요건 (1)을 충족하는 방식으로 외부 시드를 상환 스크립트에 대한 입력으로 사용하는 메커니즘이 존재하지 않는다.
해시 함수
블록체인의 구성은 해시 함수의 사용 및 그의 고유한 특성에 따른다. 비트코인 트랜잭션의 경우, 해시 함수 H는 임의의 데이터 구조 X를 취하고 256 비트의 번호 를 출력하는 단방향 결정성 함수로서 정의된다
SHA-256과 같은 해시 함수가 단방향 랜덤 오라클로 작용한다는 사실이 인식되어야 한다. 즉, 사용자에게 알려지지 않은 사전-이미지 X로부터 해시 Y가 계산되는 경우, 사용자가 X를 찾는 것은 계산적으로 어렵다.
해시 함수의 특성은 단일 비트의 값만 상이한 두 개의 256-비트 데이터 구조의 해시가 완전히 관련되지 않은 것으로서 처리될 수 있다는 것이다. 즉, 해시 값은 사용자가 사전-이미지의 그 전부를 알지 못하는 한, 사용자에 대해 진정한 랜덤 번호처럼 작용한다.
이는, 단일 파티가 전체 입력 사전-이미지 X를 제어할 수 없다는 가정 하에, 단순히 해시 값 Y - 또는 이의 일부 함수 -를 취하고, 생성되도록 의도된 단일 랜덤 번호 R로 처리하는 것이 가능함을 의미한다
확장하여, (k + 1)의 랜덤 번호 시퀀스 S R - 랜덤 값 - 은 동일한 인수를 사용하여 초기 랜덤 번호 R 0의 반복된 해싱(hashing)에 의해 생성될 수 있다
또한, 해시 함수가 결정성이기 때문에, 임의의 파티는 사용된 특정 해시 함수 및 여기에서 시드로서 역할을 하는 초기 사전-이미지 X 0에 대한 지식만으로 전체 시퀀스 S R 을 재현할 수 있음을 유의해야 한다.
랜덤 시퀀스가 생성될 때, 이 초기 사전-이미지가 공개되는 경우, 임의의 노드는 시퀀스가 이 사전-이미지에 대응함을 독립적으로 검증할 수 있다.
랜덤 번호(들)를 생성하는 것에 수반되는 단일 파티가 전체 초기 사전-이미지 X 0을 조작할 수 없는 경우에만, 위의 기준 (1) 및 (2)를 충족하는 스크립트 내에서 사용될 랜덤 번호 시퀀스를 생성하는 데 해시 함수가 사용될 수 있다는 것이 명백하다.
대안적인 단방향 함수
일반적으로, '해시 함수'라는 용어는 해시 함수가 비트코인 스크립트에서 기존의 op_code를 갖기 때문에, 더 광범위한 함수의 클래스 내에서 특정한 타입의 단방향 함수를 지칭하기 위해 본원에서 사용된다. 하지만, 본원에서 해시 함수의 임의의 인스턴스(instance) 대신에, 대안적인 단방향 함수가 사용될 수 있음이 가능하다. 두 개의 예시는 다음을 포함한다
1. 타원 곡선(EC) 점 곱셈 - 개인 키로부터 EC 공개 키를 생성하는 데 사용되는 함수 이고, 여기서 G는 타원 곡선 기준 점이고 '·'은 EC 점 곱셈 연산자이다. x, G가 주어지면 E(x)를 계산하기 쉽지만 E(x), G가 주어지면 x를 결정하기가 계산적으로 어렵기 때문에, 이는 단방향 함수이다.
2. 라빈 함수(Rabin function) - 함수 R(x)=x 2 mod N이고, 여기서 N = pq이고, p, q 모두 소수이다. 제곱 R(x) 모듈로 N을 찾는 것은 쉽지만, R(x), N이 주어지면 제곱근 ±x를 찾는 것은 p, q를 찾기 위해 N을 인수분해하는 것만큼 어려우며, 이는 계산적으로 힘들다.
디지털 서명
플레이어 Alice가, 그녀의 개인 키 S A 를 사용하여 메시지 해시 H(m)에 대한 디지털 서명을 생성하기를 원하는 것을 고려한다. Alice는 ECC(secp256k1 표준에 의해 정의된 타원 곡선을 사용하는 타원 곡선 암호화)에 따라 그녀의 개인 키와 연관된 공개 키 P A 를 갖고, G는 차수 n의 타원 곡선 기준 점이다.
서명의 부분 s는 Alice의 개인 키, 그녀의 해시된 메시지 및 임시 키와 조합되어 이로부터 도출된다.
r 및 s를 연결함으로써 메시지 해시의 ECDSA 디지털 서명으로 알려진 데이터 구조가 생성된다
값 r 및 s가 별도로 주어지면, 연산자 OP_CAT을 사용하여 비트코인 스크립트에서 전체 서명이 구성될 수 있다. 서명이 재구성될 때, 이는 비트코인 스크립트에서 사용될 표준 DER(저명한 인코딩 규칙(Distinguished Encoding Rules) - S. Blake-Wilson, D. Brown, P. Lambert, Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS), Network Working Group (2002)에 개시됨, https://tools.ietf.org/html/rfc3278) 포맷[부록 5.1]이어야 한다. 이 점은 랜덤 번호를 생성하기 위해 아래에서 논의하는 서명 방법을 사용할 때 중요하다.
방법
블록체인을 사용하여 랜덤 번호를 생성하기 위해 제안된 일반적인 방법은 세 개의 변형이 있다. 각 방법은 랜덤 번호를 생성하기 위해 참여하는 다수의 파티를 수반한다.
제1 방법은 안전한 랜덤 번호를 생성하기 위해 해시 사전-이미지의 조합을 사용하는 한편, 제2 방법은 여러 서명의 s-구성요소의 조합을 사용한다. 마지막으로, 두 개의 방법의 하이브리드가 제안된다.
해시 방법
N명의 제1 참가자는, 각각 그들 자신의 해시 값 Y i =H(X i )를 공개하는 플레이어의 형태로 간주하며, 여기서 각 플레이어가 그들 자신의 비밀 사전-이미지 X i 의 형태의 제1 데이터 항목을 선택하는 것으로 정해진다. 해시 함수의 특성은 그것이 공개 해시 값의 지식이 주어지면 플레이어가 다른 플레이어의 사전-이미지를 추측할 수 없다고 가정되는 것을 허용한다.
그 후, 플레이어는 그의 비밀 사전-이미지 X i 를 오라클의 형태로 제2 참가자에게 전송한다(방법은 두 개의 타입의 오라클; 블라인드 또는 다른 방식으로 일반화된다). 이는 예를 들어, 국제특허출원 WO 2017/145016에서 요약된 비밀 값 분산 기술을 통해 행해질 수 있지만, 사전-이미지를 오라클에 전달하기 위한 안전한 채널 또는 메커니즘을 제공하는 임의의 방법이 사용될 수 있다.
오라클은 다음 방법을 통해 랜덤 번호 R N 을 생성한다.
1. 오라클은 각 플레이어에 의해 제공되는 사전-이미지에 대해
Y
i
= H(
X
i
)를 검증한다.
사전-이미지가 오라클로 전송되기 전에 해시 값이 이미 공개되었음이 상기되어야 한다. 이는 오라클이 각 플레이어에 의해 원래 제공된 올바른 사전-이미지를 공급받는 것을 보장한다. 블록체인 상에서 이들 공개 값은 불변하며, 따라서 사전-이미지를 전송한 이후에 플레이어에 의해 변경될 수 없다.
이 검증 단계는 모든 플레이어가 그의 선택된 비밀 사전-이미지로 공급할 때까지, 오라클이 랜덤 번호를 생성하는 것을 진행하지 않을 것임을 보장한다.
2. 오라클은 다음과 같이
R
N
을 계산한다
위에서부터, 원래의 사전-이미지 값 X i 의 모든 N을 아는 플레이어가 없는 경우에만, R N 이 각 및 모든 플레이어에 대한 랜덤 번호라는 것이 상기되어야 한다.
현재 방법에서, 모든 사전-이미지가 플레이어에 의해 비밀로 유지되고 오라클에 안전하게 전달된다. 이는 악의적인 파티가 이들이 수반된 모든 플레이어를 제어하지 않는 한 모든 이들 입력을 알 수 있는 방법이 없음을 의미한다. 이 경우, 상대방은 그 자체로만 사용될 랜덤 번호를 평범하게 조작할 것이다.
최소한 한 명의 진정한 플레이어가 있는 다른 모든 시나리오에서, 해시 함수의 설명된 특성은 이들이 R N 을 유리한 방식으로 조작할 수 없음을 의미한다. 이는 상대방이 모든 N-1 다른 플레이어를 제어할 때에도 그러하다. 그러므로, 임의의 파티(들)가 다른 파티에게 부정적인 영향을 미칠 수 있는 이 방법에 의해 생성된 랜덤 번호에 영향을 미칠 수 있는 방법이 없다. 이는 비트코인 스크립트에서 구현하기가 간단하기 때문에, 사전-이미지 X i 의 추가적인 '+' 합산이 현재의 경우에 사용되었지만, 위의 합산과 유사한 시리즈에서 연결과 같은 상이한 연산자를 사용하는 것이 가능하다는 것이 유의되어야 한다.
이제 (1) 프로세스에 수반되는 임의의 파티에 대해 예측할 수 없는 방식, 및 (2) 결정성 프로세스를 통해 재현 가능한 방식 모두로 생성된 랜덤 번호 R N 이 있다. 랜덤 번호가 (3) 검증 가능한 위에서 제시된 최종 요건이 또한 충족되는 것이 아래에서 나타날 것이다. 확장은 R N 의 반복된 해싱에 의해 오라클에 의해 랜덤 번호 시퀀스가 또한 생성될 수 있다는 것이다.
서명 방법
이제 각각, 서명 Sig P i 뿐만 아니라, s'-구성요소가 비밀로 유지되는 제2 서명 Sig P' i 의 일부를 형성하는 랜덤 값 r' i 를 공개하는 N명의 플레이어 형태의 제1 참가자를 고려한다.
서명 모두가 공개 키 P i 의 동일한 소유자에 대응하는지가 검증될 수 있도록, 서명 모두가 동일한 개인 키 S i 를 사용하여 (위에서 언급된 동일한 ECDSA 표준을 통해) 서명된다는 것이 중요하다.
그 후, 플레이어는 그의 비밀 s' i 값의 형태의 제1 데이터 항목을 오라클의 형태로 제2 참가자에게 전송하고, 예를 들어 국제특허출원 WO 2017/145016에서 요약된 또는 다른 안전한 비밀-공유 방법을 통해 다시 행해진다.
그 후 오라클은 다음 방법을 통해 랜덤 번호 R N 을 생성한다.
1. 오라클은
Sig
P
'
i
를 구성하고, 그것이 각 플레이어에 대해
Sig
P
i
와 동일한 엔티티에 대응하는지를 검증한다.
이 제2 서명은 부록 1에 도시된 DER 표준을 사용하여 공개 r' i 값을 비밀 s' i 값과 연결시킴으로써 구성된다. 그 후, 오라클은 표준 ECDSA 서명 검증 알고리즘을 서명 모두에 적용하고, 이들이 공개 키 P i 의 소유자에 의해 공통으로 서명되었는지를 확인한다. 이는 주어진 r' i 값에 대해 그 자신의 서명을 제공함으로써 다른 파티가 랜덤 번호에 영향을 줄 수 없음을 보장한다.
2. 오라클은 다음과 같이
R
N
을 계산한다
오라클은 제1 데이터 항목의 합의 형태로 제2 데이터를 생성하고, 그 후 제2 데이터의 해시의 형태로 제3 데이터를 생성한다. 이는 ECC에서의 개인 키로부터 공개 키를 생성하기 위한 단방향 프로세스와 단방향 해시 함수의 유사함에 기인하여, 위에서 설명된 해시 방법에서 요약된 동일한 특성을 상속한다.
교체 Y i → P i 및 X i → s' i 가 이루어지는 경우, 유사함이 명백하고 위에서 설명된 해시 방법의 단계 2에 제시된 설명이 또한 현재 경우에 적용된다.
위에서 설명된 해시 방법과 마찬가지로, 수반된 임의의 파티에 대해 예측 가능하지 않고 검증 가능한 방식으로 랜덤 번호 R N 이 이제 생성되었으며, 이는 위에서 요약된 기준 (1) 및 (2)를 충족한다. 서명 방법 및 해시 방법은 서로에 대해 직접적으로 유사하며, 랜덤 번호 생성을 위한 그의 각각의 방법의 핵심 특성을 공유한다는 것이 명백해야 한다. 특히, 두 개의 방법 모두 각 사용자가 비밀 값; 각각 해시 및 서명 방법에 대한 X i 및 s' i 을 생성하는데 책임이 있도록 요구한다. 본원에서 서명 방법을 사용하는 추가적인 이점은 비밀을 선택하는 행위가 ECDSA 절차 하에 이미 표준화되었지만 임의의 해시 사전-이미지를 선택하는 것은 그렇지 않다는 것이다.
서명 방법에서, 오라클에 전송된 비밀 값 s' i 을 직접적으로 검증하기 위한 방식은 이에 동반하는 프라이머리 서명(primary signature) Sig P i = (r i , s i )와 비교하여 대응하는 공개 값 r' i 의 원래 제안자에 의해 제공된다. 이 검증은 해시 방법에서 암시적인 것일 뿐이다.
스크립트 내의
R
N
을 계산하는 것
영역 모두에서, 랜덤 번호 R N 은 (1) 예측할 수 없고 (2) 결정성인 위에서 요약된 요건 모두를 충족한다. 이하, 본 개시의 방법이 랜덤 번호가 (3) 검증 가능하다는 제3 기준을 어떻게 충족하는지가 상세히 설명된다.
이는 모든 네트워크 피어가 R N 이 올바른 방식으로 생성되었음을 독립적으로 검증하기 위한 방식이 필요하다는 것을 의미한다. 이는 R N 그 자체가 트랜잭션의 잠금 스크립트에서 계산되고 사용되는 것을 요구함으로써 달성된다. 이 방식으로, 모든 이전의-비밀 s' i 값이 이 스크립트의 일부로서 블록체인 상에 공개되며, 이는 누구나 해시 함수 의 입력 사전-이미지를 구성함으로써 랜덤 번호를 검증할 수 있다는 것을 의미한다.
여기서 연산자 'OP_ADD'의 N-1번의 사용 및 N개의 비밀 값이 있다.
이 응용에 제시된 응용에서, <R N >은 이 스크립트를 참조하는 데 사용될 것이다. 이 스크립트가 해시 사전-이미지, 부분 서명 및 이들의 조합을 포함하는 일반화된 비밀 값에 대해 사용될 수 있다는 것을 유의한다. 도 1은 이 스크립트가 랜덤 번호를 생성하기 위해 어떻게 사용되는지를 도시한다.
트랜잭션에 대한 전체 상환 스크립트는 각 사전-이미지가 올바른 커밋된 해시에 대응하는지, 각 비밀 서명 구성요소가 예상된 서명을 형성하기 위해 공개 구성요소와 결합하는지, 각 공급된 값이 올바른 플레이어로부터 온 것인지에 대한 검증을 포함할 수 있다[부록 2].
결합된 방법
지금까지 제시된 방법은 생성된 랜덤 번호의 결과에 영향을 미치려는 악의적인 파티에게 강력하다. 하지만, 생성된 랜덤 번호(들)의 보안 및 예측 불가능성을 개선하기 위해 해시 방법 및 서명 방법이 확장되고 결합될 수 있는 다수의 방식이 있다.
두 개의 방법의 가장 간단한 조합은 각 플레이어가 해시 값 Y i 뿐만 아니라, 서명 Sig P i , 랜덤 값 r' i 및 그의 공개 키 P i 를 공개하는 것일 것이다. 그 후, 오라클은 다음과 같이 랜덤 값을 생성할 수 있으며
여기에서 각 플레이어는 또한, 세컨더리 서명(secondary signature) Sig P' i = (r' i , s' i )를 개인적으로 계산한다. "+" 연산자는 본 출원에서 모든 합산에 대한 추가 또는 연결일 수 있다. 여기서 추가 또는 연결 연산자 '+'는 다른 구현에서 XOR과 같은 다른 연산자에 의해 대체될 수 있음이 유의되어야 한다.
그 대신에 두 개의 방법 중 하나를 개별적으로 확장하는 것이 바람직한 경우, 다수의 오라클이 불러와지고(invoked) 플레이어 각각이 다수의 해시 값 Y i 또는 세컨더리 r' i 값을 제공하는 것을 부과하는 것이 가능하다. 예를 들어, 두 개의 오라클이 해시 방법을 사용하여 불러와지는 경우, 랜덤 번호 R N 은 다음과 같이 계산될 수 있으며
여기서 제1 오라클은 하나의 세트의 사전-이미지 X i, 1 의 합을 제2 오라클로 전송하고, 이는 제2 세트의 사전-이미지 세트 X i, 2 의 합에 이를 추가하고, 랜덤 번호를 계산한다.
다수의 오라클을 불러옴으로써, 악의적인 사용자에 의해 오라클이 어떻게든 손상될 위험이 제거된다. 이를 대량의 오라클로 확장하는 것은 더 큰 계산 및 시간적 오버헤드의 희생으로 모든 오라클이 공모할(colluding) 위험을 감소시킨다.
이들 방법은 랜덤 번호가 안전하고 예측할 수 없게 생성되도록 단일 오라클만이 진정한 것(genuine)이어야 한다는 것을 보장한다는 것이 유의되어야 한다.
응용
본 출원에서 설명된 랜덤 번호-생성의 방법에 대한 사용-사례가 설명된다. 제1 응용은 '하우스(house)'의 역할을 하는 파티가 있는 시나리오 및 이 역할을 하는 파티가 없는 시나리오 모두에서 고려되는, N명의 플레이어를 수반하는 블록체인 복권의 맥락에 있다. 제2 응용은 사토시 주사위(Satoshi dice)의 N면 게임에 대한 것이며, 이를 통해 플레이어가 하우스를 통해 간단한 운의 게임에 참가하는 것이다. 블록체인을 사용하여 랜덤 번호를 생성하기 위한 더 일반적인 사용이 고려된다.
복권
연관된 공개 키 를 갖는 N명의 플레이어의 그룹을 고려한다. 이들 플레이어를 수반하는 복권이 구성되며, 여기서 당첨 자금은 랜덤으로 선택된 공개 키 P W 의 소유자에게 잠금될 것이다.
복권의 구조는 세 개의 트랜잭션
(i) 개시 트랜잭션
(ii) 오라클 트랜잭션
(iii) 당첨금-상환 트랜잭션을 포함하고
당첨 자금을 P W 로 잠그는 데 사용되는 랜덤 번호의 안전한 생성을 위해 하나의 오라클을 불러온다.
이러한 복권에서, 각 플레이어가 1/N 확률로 N×x 비트코인의 동일한 당첨 기회를 가지는 것이 보장되며, 여기서 x는 복권 티켓에 대한 초기 바이-인 값(buy-in value)이다.
또한, 복권의 일부로서, 당첨자 파티가 그의 보상을 청구하지 않을 경우 복권 자금을 되찾을 수 있는 '하우스'가 포함된 경우가 별도로 고려된다.
이 경우, 각 플레이어는 확률 1/(N + 1)로 r + (N×x) 비트코인의 당첨 기회를 가지며, 여기서 r은 하우스의 바이-인 기여도이다.
개시 트랜잭션
1. 각 플레이어는 x 비트코인의 공통 값을 블록체인 복권 티켓에 대한 그의 바이-인으로 개시 트랜잭션에 기여한다. 이 트랜잭션은 N개의 입력 및 1개의 출력을 포함할 것이며, 모든 참가자에 대한 블록체인 복권 티켓의 디지털 판매 시점(point of sale)을 나타낸다.
2. 바이-인에 부가하여, 각 플레이어는 또한, 입력으로서 표준 OP_DROP 명령문에 있는 공개 값을 포함한다. 이 값은 사용될 랜덤 번호-생성 방법에 의존할 것이다.
이 구현에 대해, 서명 방법이 사용되며, 따라서 공급된 값은 s' i - 구성요소가 비밀로 유지되는 서명 Sig P' i = (r' i , s' i )을 형성하는 랜덤 값 r i '이다.
3. 마지막으로, 각 플레이어는 그의 공개 키 P i 및 이에 대응하는 서명 Sig P i = (r i , s i )을 제공한다. 이는 트랜잭션이 단일 N×x 출력을 생성하기에 충분한 입력을 포함할 때까지 모든 플레이어에 대해 행해진다. 이 출력은 오라클 P O 에 대응하는 공개 키로 지불된다.
개시 트랜잭션의 구조는 도 2에 도시된다.
오라클 트랜잭션
1. 각 플레이어는 그의 비밀 s' i 를 오라클에 전송한다.
오라클은 심지어 개시 트랜잭션이 발생하기 전에 결정될 것이다. 이는 신뢰된 제3 파티, 목적-기반(purpose-built) TEE(신뢰된 실행 환경(trusted execution environment) - 특정한 기능을 위한 알려진 코드 또는 일부 다른 형태의 오라클을 실행하기 위한 목적 기반의 하드웨어의 조각)일 수 있다.
2. 오라클은 각 세컨더리 서명 Sig P' i = (r' i , s' i ) 및 각 프라이머리 서명 Sig P i = (r i , s i )이 공개 키 P i 와 연관된 동일한-키 쌍에 대응하는지를 검사한다.
3. 오라클은 트랜잭션을 구성한다. 이 트랜잭션은 그의 유일한 입력으로서 개시 트랜잭션의 UTXO를 사용하고, 전체 N×x 비트코인 자금을 단일의 당첨 공개 키로 잠근다. 당첨 키 P W 는 이 오라클 트랜잭션의 잠금 스크립트 내에서 생성된 랜덤 번호 R N 을 사용하여 랜덤으로 선택된다.
아래에 도시되고 <P W >로 또한 표시된 도 3의 출력 스크립트는, N개의 참가 키 P i 의 세트로부터 당첨 공개 키를 랜덤으로 선택하는 데 사용된다. 이는 이전 스크립트 <R N >에 의해 시드되고, 이는 당첨 키를 선택하는 랜덤 번호를 제자리에서(in-situ) 계산하며
여기서, 연산자 'OP_DROP'의 N-1번의 사용 및 N개의 공개 키가 있다.
잠금 스크립트의 처음 두 개의 줄에서, 참가하는 공개 키의 세트는 스크립트의 <R N > 부분에 의해 생성된 값에 따라 조작된다. 그 후, 스크립트는 단순히 서명 Sig P W 을 요구한다. 오라클 트랜잭션의 잠금 스크립트는 당첨 공개 키 P W 의 소유자에 의해 서명될 당첨 자금에 단순히 영향을 준다. 이 잠금 스크립트에서 공개 키가 나타나는 순서는 그것이 개시 트랜잭션에서 나타나는 순서와 일치해야 하며, 그렇지 않으면 오라클이 공개 키를 재정렬함으로써 결과를 조작할 수 있다는 것이 유의되어야 한다.
하우스를 통한 복권
이 응용에서, '하우스'의 역할을 하는 파티가 없는 N-플레이어 복권이 구성된다. 비트코인 생태계에서 자금이 단순히 손실되거나 낭비되지 않음을 보장하기 위해, 이 개념을 이러한 복권으로 확장하는 것이 바람직할 수 있다. 예를 들어, 하나의 파티가 복권을 구성하기를 원하고, 사용자 인터페이스를 설정하는 것, 오라클을 인스턴스화하는 것, 또는 참가자를 소싱하는(sourcing) 것과 같은 수반되는 오버헤드를 가짐으로써(taking on), 하우스로서의 역할을 제공하는 경우, 이들은 그렇게 하기 위한 인센티브를 받기를 원할 수 있다. 이 인센티브는 복권의 당첨 자금을 하우스로 전송할 타임 아웃 메커니즘(timeout mechanism)의 형태일 수 있다. 이 복권을 구현하는 것은 x 비트코인에 기여하는 N-플레이어 및 r 비트코인에 기여하는 하우스를 수반할 것이다. 하우스는 전체 복권 자금을 되찾을 수 있을 것이고, 일부 협의된 타임아웃 기간 △T E 가 경과한 이후에 오라클 트랜잭션이 도 4에 제시된 형태를 취하도록 수정된 경우, 그의 공개 키 P H 로 지불할 수 있다.
도 4의 오라클 트랜잭션에서, 잠금 스크립트는 타임아웃 페일세이프(timeout failsafe)를 포함하도록 수정되고, 이는 당첨자 파티가 협의된 시간 이전에 그의 보상을 청구하지 않는 경우 하우스의 역할을 하는 파티가 복권 자금을 소비하는 것을 허용할 것이다. 청색으로 강조된 잠금 스크립트의 부분은 이것이 발생하는 것을 허용한다. 하우스를 포함하는 이러한 타입의 블록체인 복권에서, 각 플레이어는 확률 1/(N+1)로 r+(N×x) 비트코인의 당첨 기회를 가지며, r은 하우스의 바이-인 기여이다. 복권에 하우스를 추가하는 이 개념은 하우스에 대응하는 공개 키의 세트를 포함함으로써, 다양한 국가의 국영 복권과 같이, 당첨자가 있지 않을 수 있는 복권으로 확장할 수 있다. 이들 키 중 하나가 선택된 경우, 복권은 롤오버(rolls over)된다.
당첨금-상환
오라클 트랜잭션이 블록체인 상에 기록되면, 당첨 공개 키 P W 의 소유자는 당첨 자금을 소비할 수 있다. 이 타입의 유효한 트랜잭션은 도 5에 도시된다.
이 트랜잭션의 잠금 해제 스크립트는 당첨 공개 키에 대응하는 서명 Sig P W 를 포함한다. 오라클 트랜잭션에 의해 영향을 받은 자금을 잠금 해제할 때, 상환 트랜잭션(scriptSig)에 대한 이 입력은 이전의 오라클-구성된 트랜잭션의 잠금 스크립트(scriptPubKey)와 함께 실행될 것이다. 이들 두 개의 조각의 스크립트의 조합은 도 6에 도시되며, 당첨 플레이어는 단순히 당첨 공개 키 P W 에 대응하는 서명을 제공함으로써, N×x 비트코인 당첨 자금을 소비할 수 있음을 나타낸다.
N면 사토시 주사위
본 출원의 방법의 제2 응용은 딜러 및 한 명의 플레이어를 포함하는 게임이다. 이 게임은 플레이어가 N면 주사위를 굴린 결과를 정확하게 추측하는 것에 동일하다. 이 게임은 위에서 요약된 일반적인 블록체인 복권 응용의 단순한 두 개의 파티 경우라는 것이 명백하다. 여기서, 하나의 파티는 딜러의 역할을 하고 다른 것은 플레이어 역할을 한다.
이 시나리오에서, 다음의 절차는 게임이 어떻게 플레이 되는 지를 설명한다.
2. 개시 트랜잭션은 플레이어로부터 Y P = H(X P ) 및 사전-이미지가 던져진 N면 사토시 주사위를 나타내는 시험 T의 결과를 결정하기 위한 입력 매개 변수일 Y D = H(X D )를 커밋한다. 이 트랜잭션은 오라클에 지불되며, 플레이어에 의해 걸린 금액 x 비트코인 및 딜러에 의해 걸릴 당첨 반환금 R 비트코인을 모두 포함한다.
3. 사전-이미지 X P 및 X D 는 국제특허출원 WO 2017/145016에서 요약된 것과 같은 비밀 값 배포 기술을 사용하여 오라클에 전송된다. 그 후, 오라클은 게임 자금을 당첨 공개 키 P W 로 잠그는 트랜잭션을 구성한다.
이는 일반 복권 경우에서와 동일한 방식으로, 하지만 플레이어에 속하는 하나의 공개 키 P만을 통해 및 딜러에 속하는 N-1 공개 키 를 통해 행해진다. 사토시 주사위를 굴린 결과 T는 잠금 스크립트에서 계산되며 다음과 같이 주어진다
4. c = T인 경우, 플레이어는 오라클 트랜잭션의 출력을 소비함으로써 당첨 자금 x + R 비트코인을 상환할 수 있다. 그렇지 않으면, 당첨 자금은 딜러에 의해 상환 가능하다.
본 출원에서 이전에 제시된 논의에 의해, 랜덤 번호 가 성공적으로 생성되었고, 이는 기준 (1)-(3)을 충족하고 운의 게임의 결과를 결정하는 데 사용된다. 위에서 설명된 해시 방법은 추측이 플레이어의 선호도에 더 쉽게 맞는 것을 허용하므로 이 응용에 더 적합할 수 있다.
평균적으로, 플레이어는 원하는 추측 값에 도달하기 전에 최대 N개의 임의의 사전-이미지 X P 의 해시를 계산할 수 있으며, 이는 그 후 게임에 커밋될 수 있다. 이 방식으로 설정된 운의 게임은 플레이어에게 x + R 비트코인의 1/N의 당첨 기회를 제공하며, 여기서 연관된 이득 R은 x의 함수일 수 있다.
다른 생성기를 시딩하는 것(Seeding)
비트코인 블록체인 프로토콜을 사용하여 랜덤 번호가 어떻게 스크립트 내에서 안전하게 생성될 수 있는 지가 위에서 나타난다. 제시된 복권 응용에서, 이는 이들 랜덤 번호를 다른 곳에서 즉, 일부 오프-체인 목적을 위해 사용하는 것 보다, 트랜잭션에서 함수에 대한 이들 랜덤 번호를 바로 사용하는 것이 제안되었다.
본 출원에서 설명된 방법은 안전한 컨센서스-기반의 투명한 프로토콜을 통해 랜덤 번호를 생성하는 가장 간단한 경우로 일반화된다.
예를 들어, 단일 파티 또는 조직이 오프-체인 프로세스를 시드하기 위해 랜덤 번호를 생성하기를 원하는 경우, 그는 그렇게 하기 위해 이 문서에 제시된 방법 중 하나 이상을 사용할 수 있다. 파티는 복권 응용에 사용되는 것과 유사한 트랜잭션 흐름을 구성함으로써, 하지만 프로세스의 전역 입력 및 출력에 상당한 자금을 연관시키지 않으면서 간단히 진행할 것이다. 이 방식으로, 파티는 메커니즘, 시드(즉, 비밀 값 s' i 의 선형 조합) 및 결과가 모두 블록체인 공공 원장에 대해 투명하게 기록되는 방식으로, 랜덤 번호 R N 또는 시퀀스 S R 을 생성하기 위해 블록체인을 사용할 수 있다.
이제 도 7를 참조하면, 본 개시의 적어도 하나의 실시예를 실시하는 데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 서술된 시스템 중 임의의 것을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스로서 사용하도록 구성될 수 있다. 도 7에 도시된 바와 같이, 컴퓨팅 디바이스(2600)는 메인 메모리(2608) 및 영구 저장소(2610)를 포함하는 저장소 서브시스템(2606)과 통신하도록 구성될 수 있는 하나 이상의 수준의 캐시 메모리 및 메모리 제어기를 갖는 하나 이상의 프로세서(집합적으로 2602로 라벨링 됨)를 포함할 수 있다. 메인 메모리(2608)는 도시된 바와 같이 동적 랜덤 액세스 메모리(DRAM)(2618) 및 판독 전용 메모리(ROM)(2620)를 포함할 수 있다. 저장소 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시에서 서술된 바와 같은 트랜잭션 및 블록과 연관된 세부사항과 같은, 정보의 저장을 위해 사용될 수 있다. 프로세서(들)(2602)는 본 개시에서 서술된 임의의 실시예의 단계 또는 기능을 제공하기 위해 이용될 수 있다.
프로세서(들)(2602)는 또한, 하나 이상의 사용자 인터페이스 입력 디바이스(2612), 하나 이상의 사용자 인터페이스 출력 디바이스(2614) 및 네트워크 인터페이스 서브 시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 디바이스(2600)의 다양한 구성요소 및 서브시스템이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일의 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예는 다수의 버스를 이용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 디바이스 및 네트워크에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 디바이스(2600)로부터 다른 시스템으로부터 데이터를 수신하고 이로 데이터를 송신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 데이터 센터와 같은 원격 위치에 있는 디바이스로 데이터를 송신하거나 또는 그 디바이스로부터 데이터를 수신할 수 있도록, 데이터 기술자가 디바이스를 네트워크에 연결하게 할 수 있다.
사용자 인터페이스 입력 디바이스(2612)는 키보드; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 디바이스; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 디바이스; 및 다른 타입의 입력 디바이스와 같은 하나 이상의 사용자 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)에 정보를 입력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다.
하나 이상의 사용자 인터페이스 출력 디바이스(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 디바이스 또는 다른 디스플레이 디바이스일 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는, 예를 들어, 이러한 사용자 상호작용이 적절할 수 있을 때, 서술된 프로세스 및 그 변형을 수행하는 애플리케이션과의 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
저장소 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의해 실행될 때, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시의 하나 이상의 실시예의 기능을 제공할 수 있고, 저장소 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 저장소 서브시스템(2606)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 보관소를 추가적으로 제공할 수 있다. 예를 들어, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 저장소를 제공할 수 있다. 영구 저장소(2610)는 프로그램 및 데이터에 대한 영구적인(비-휘발성) 저장소를 제공할 수 있고, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자기 하드 드라이브(magnetic hard disk drives), 연관된 이동식 매체를 갖는 하나 이상의 플로피 디스크 드라이브, 연관된 이동식 매체를 갖는 하나 이상의 광학 드라이브(예를 들어, CD-ROM 또는 DVD 또는 블루-레이) 드라이브 및 다른 유사한 저장 매체를 제공할 수 있다. 이러한 프로그램 및 데이터는 본 개시에서 서술된 하나 이상의 실시예의 단계를 수행하기 위한 프로그램뿐만 아니라, 본 개시에서 서술된 트랜잭션 및 블록과 연관된 데이터를 포함할 수 있다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크스테이션, 또는 아래에서 서술되는 임의의 다른 디바이스를 포함하는 다양한 타입일 수 있다. 추가적으로, 컴퓨팅 디바이스(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2600)에 연결될 수 있는 디바이스는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 디바이스는 광 신호를, 처리를 위해 디바이스를 컴퓨팅 디바이스(2600)에 연결하는 포트를 통해 송신될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크의 계속 변하는 성질에 기인하여, 도 7에 도시된 컴퓨팅 디바이스(2600)의 서술은 디바이스의 바람직한 실시예를 예시할 목적으로 특정 예시로서만 의도된다. 도 7에 도시된 시스템보다 더 많거나 적은 구성요소를 갖는 다수의 다른 구성이 가능하다.
전술한 실시예는 본 개시를 제한하는 것이 아니고, 통상의 기술자는 첨부된 청구범위에 의해 정의된 본 개시의 범주를 벗어나지 않으면서, 다양한 대안적인 실시예를 설계할 수 있음이 유의되어야 한다. 청구범위에서, 괄호안에 있는 임의의 참조 부호는 청구범위를 제한하는 것으로 해석되어서는 안된다. 포함하는 및 "포함한다" 등의 단어는 임의의 청구범위 또는 명세서 전체에 열거된 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서, "포함한다"는 "포함하거나 구성된다"를 의미하고, "포함하는"은 "포함하거나 구성되는"을 의미한다. 요소의 단수형 참조는 이러한 요소의 복수형의 참조를 배제하지 않으며, 그 역으로도 그러하다. 본 개시는 수 개의 개별적인 요소를 포함하는 하드웨어에 의해, 그리고 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 수개의 수단을 나열하는 디바이스 청구항에서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어의 항목에 의해 구현될 수 있다. 특정 측정치가 서로 상이한 종속 항에서 인용된다는 단순한 사실만으로 이들 측정치의 조합이 유리하도록 사용될 수 없음을 나타내지 않는다.
부록
1. 서명의 DER 인코딩
2. 검증 스크립트
i. 사전-이미지 검증
다음의 스크립트는 공급된 사전-이미지 X i 의 각각이 스크립트 내 프로세스로 올바른 사전 커밋된 해시 값 Y i 에 대응하는 것을 검증하는 데 사용될 수 있다.
ii. 서명 검증
다음의 스크립트는 공급된 세컨더리 서명 Sig P' i 및 초기 서명 Sig P i 의 각각이 모두 다시, 스크립트 내 프로세스로서 공개 키 P i 에 대응한다는 것을 검증하기 위해 사용될 수 있다.
참조문헌
Claims (23)
- 데이터를 의사-랜덤으로(pseudo-randomly) 생성하는 방법으로서, 상기 방법은:
복수의 제1 참가자의 각각으로부터 적어도 하나의 각각의 제1 데이터 항목을 포함하는 제1 데이터를 수신하는 단계;
제2 데이터를 생성하기 위해 복수의 상기 제1 데이터 항목을 결합하는 단계; 및
제3 데이터를 생성하기 위해 상기 제2 데이터의 적어도 일부에 적어도 하나의 단방향 함수를 적용하는 단계 - 그 또는 각 상기 단방향 함수는 입력 데이터를 수신하고, 상기 입력 데이터를 기초로 출력 데이터를 생성하도록 적응되고, 상기 입력 데이터는 상기 출력 데이터 및 상기 단방향 함수로부터 추론 가능하지 않음 -를 포함하는, 방법. - 제1항에 있어서, 상기 제1 데이터는 상기 제1 참가자로부터 암호화된 형태로 수신되는, 방법.
- 제1항 또는 제2항에 있어서, 복수의 상기 제1 참가자의 각각으로부터 적어도 하나의 각각의 제4 데이터 항목을 포함하는 제4 데이터를 수신하는 단계를 더 포함하고, 그 또는 각 상기 제4 데이터 항목은 상기 제1 참가자에 대응하는 그 또는 각 각각의 상기 제1 데이터 항목에 적어도 하나의 단방향 함수를 적용함으로써 생성되는, 방법.
- 제3항에 있어서, 복수의 상기 제1 참가자에 상기 제4 데이터를 전송하는 단계를 더 포함하는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 적어도 하나의 상기 단방향 함수는 해시 함수인, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 적어도 하나의 상기 단방향 함수는 암호화 시스템의 각각의 공개-개인 키 쌍의 공개 및 개인 키와 관련되는, 방법.
- 제6항에 있어서, 상기 암호화 시스템은 타원 곡선 암호화 시스템인, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 적어도 하나의 상기 제1 데이터 항목은 각각의 제1 디지털 서명의 적어도 일부를 포함하는, 방법.
- 제8항에 있어서, 적어도 하나의 상기 제1 데이터 항목은 각각의 제1 디지털 서명의 적어도 일부를 포함하고, 상기 일부는 개인 키 및 임시 키를 기초로 하는, 방법.
- 제8항 또는 제9항에 있어서, 복수의 상기 제1 참가자의 각각으로부터 적어도 하나의 각각의 제2 디지털 서명을 수신하는 단계를 더 포함하고, 상기 제2 디지털 서명은 대응하는 상기 제1 디지털 서명과 동일한 개인 키로 서명되는, 방법.
- 제8항 내지 제10항 중 어느 한 항에 있어서, 복수의 상기 제1 참가자의 각각으로부터 각각의 제5 데이터 항목을 포함하는 제5 데이터를 수신하는 단계를 더 포함하고, 상기 제5 데이터 항목은 대응하는 상기 제1 디지털 서명의 일부이고, 상기 제1 디지털 서명은 상기 제5 데이터 항목을 대응하는 상기 제1 데이터 항목과 결합함으로써 구성되는, 방법.
- 제11항에 있어서, 상기 제5 데이터를 복수의 상기 제1 참가자에 전송하는 단계를 더 포함하는, 방법.
- 제11항 또는 제12항에 있어서, 적어도 하나의 상기 제5 데이터 항목은 임시 키를 기초로 각각의 제1 디지털 서명의 적어도 일부를 포함하는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제3 데이터의 생성에 이어서 상기 제1 데이터를 복수의 상기 제1 참가자에게 전송하는 단계를 더 포함하는, 방법.
- 제14항에 있어서, 상기 제3 데이터는 상기 제1 데이터 항목을 포함하는 스크립트를 통해 상환 가능한 블록체인 트랜잭션의 일부를 형성하는, 방법.
- 제15항에 있어서, 상기 스크립트의 실행은 상기 제1 데이터 항목으로부터 상기 제3 데이터를 재생성하는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제3 데이터는 복수의 상기 단방향 함수를 통해 생성되는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제3 데이터는 적어도 하나의 상기 단방향 함수의 반복된 적용을 통해 생성되는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제3 데이터는 복수의 제2 참가자를 통해 생성되는, 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제3 데이터를 기초로 복수의 항목으로부터 항목을 선택하는 단계를 더 포함하는, 방법.
- 제20항에 있어서, 상기 선택은 암호화 시스템의 공개-개인 키 쌍의 공개 키를 선택하는 단계를 포함하고, 적어도 하나의 상기 참가자는 상기 쌍의 개인 키에 대한 액세스를 갖는, 방법.
- 컴퓨터-구현된 시스템으로서,
프로세서; 및
상기 프로세서에 의한 실행의 결과로서, 상기 시스템이 제1항 내지 제21항 중 어느 한 항에서 청구된 컴퓨터-구현 방법의 임의의 실시예를 수행하게 하는 실행가능 명령어를 포함하는 메모리를 포함하는, 컴퓨터-구현된 시스템. - 컴퓨터 시스템의 프로세서에 의한 실행되는 결과로서, 상기 컴퓨터 시스템이 제1항 내지 제21항 중 어느 한 항에서 청구된 방법의 실시예를 적어도 수행하게 하는 실행가능 명령어를 저장하는, 비일시적 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1901893.6 | 2019-02-11 | ||
GBGB1901893.6A GB201901893D0 (en) | 2019-02-11 | 2019-02-11 | Computer implemented system and method |
PCT/IB2020/050599 WO2020165669A1 (en) | 2019-02-11 | 2020-01-27 | Computer implemented method and system for pseudo-random data generation |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210123393A true KR20210123393A (ko) | 2021-10-13 |
Family
ID=65998539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217028765A KR20210123393A (ko) | 2019-02-11 | 2020-01-27 | 의사-랜덤 데이터 생성을 위한 컴퓨터 구현된 방법 및 시스템 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20220129249A1 (ko) |
EP (1) | EP3924810A1 (ko) |
JP (1) | JP2022520593A (ko) |
KR (1) | KR20210123393A (ko) |
CN (1) | CN113939800A (ko) |
GB (1) | GB201901893D0 (ko) |
SG (1) | SG11202108168PA (ko) |
TW (1) | TW202040486A (ko) |
WO (1) | WO2020165669A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2597955A (en) * | 2020-08-11 | 2022-02-16 | Nchain Holdings Ltd | Pseudo-ramdom selection on the blockchain |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778069A (en) * | 1996-04-10 | 1998-07-07 | Microsoft Corporation | Non-biased pseudo random number generator |
US6934846B2 (en) * | 2003-01-22 | 2005-08-23 | Walter Szrek | Method of generating unpredictable and auditable random numbers |
AU2017223133B2 (en) | 2016-02-23 | 2022-09-08 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
US20180247191A1 (en) * | 2017-02-03 | 2018-08-30 | Milestone Entertainment Llc | Architectures, systems and methods for program defined entertainment state system, decentralized cryptocurrency system and system with segregated secure functions and public functions |
CN108964916B (zh) * | 2018-08-03 | 2021-07-16 | 中思博安科技(北京)有限公司 | 签名生成方法、生成装置、签名验证方法和验证装置 |
US10885740B2 (en) * | 2018-11-08 | 2021-01-05 | Igt | System and method for providing access to cryptocurrency from a gaming establishment account |
-
2019
- 2019-02-11 GB GBGB1901893.6A patent/GB201901893D0/en not_active Ceased
-
2020
- 2020-01-27 SG SG11202108168PA patent/SG11202108168PA/en unknown
- 2020-01-27 WO PCT/IB2020/050599 patent/WO2020165669A1/en unknown
- 2020-01-27 EP EP20704943.8A patent/EP3924810A1/en active Pending
- 2020-01-27 JP JP2021547304A patent/JP2022520593A/ja active Pending
- 2020-01-27 KR KR1020217028765A patent/KR20210123393A/ko not_active Application Discontinuation
- 2020-01-27 CN CN202080013811.9A patent/CN113939800A/zh active Pending
- 2020-01-27 US US17/429,734 patent/US20220129249A1/en active Pending
- 2020-02-06 TW TW109103730A patent/TW202040486A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2020165669A1 (en) | 2020-08-20 |
GB201901893D0 (en) | 2019-04-03 |
EP3924810A1 (en) | 2021-12-22 |
US20220129249A1 (en) | 2022-04-28 |
TW202040486A (zh) | 2020-11-01 |
JP2022520593A (ja) | 2022-03-31 |
SG11202108168PA (en) | 2021-08-30 |
CN113939800A (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7472338B2 (ja) | ブロックチェーンにおける擬似乱数生成 | |
Fuchsbauer et al. | Aggregate cash systems: A cryptographic investigation of mimblewimble | |
Bonneau et al. | Sok: Research perspectives and challenges for bitcoin and cryptocurrencies | |
KR102416506B1 (ko) | 블록체인을 이용한 논리 게이트 기능 구현 | |
JP7428704B2 (ja) | デジタルリソースへのアクセスを移転するための、コンピュータにより実施されるシステム及び方法 | |
EP3896638A1 (en) | Distributed transaction propagation and verification system | |
Lenstra et al. | A random zoo: sloth, unicorn, and trx | |
KR20200041338A (ko) | 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법 | |
KR20200141502A (ko) | 즉각적인 오프라인 블록체인 트랜잭션의 보안을 증가시키는 데 적합한 컴퓨터 구현된 시스템 및 방법 | |
KR20200017531A (ko) | 블록체인의 트랜잭션을 생성하는 방법 및 블록체인의 블록을 검증하는 방법 | |
JP7264878B6 (ja) | ブロックチェーンにおけるリソースを保護する改善された時間ロック技術 | |
Patel et al. | Blockchain-envisioned trusted random oracles for IoT-enabled probabilistic smart contracts | |
CN115918030A (zh) | 使用区块链的可证明公平的游戏 | |
Šimunić et al. | Verifiable computing applications in blockchain | |
TW202046192A (zh) | 用以於工作量證明區塊鏈網路上挖礦之系統及方法 | |
KR20220122994A (ko) | 블록체인을 이용한 증명 가능하게 공정한 게임들 | |
JP2023537121A (ja) | ブロックチェーンにおける疑似乱数的な選択 | |
US11784822B2 (en) | System and method for transmitting a notification to a network | |
Scaffino et al. | Glimpse:{On-Demand}{PoW} Light Client with {Constant-Size} Storage for {DeFi} | |
JP7565130B2 (ja) | ブロックチェーントランザクションにおける知識証明のためのコンピュータにより実施される方法及びシステム | |
KR20210123393A (ko) | 의사-랜덤 데이터 생성을 위한 컴퓨터 구현된 방법 및 시스템 | |
Li et al. | Non-equivocation in blockchain: Double-authentication-preventing signatures gone contractual | |
Clark et al. | Research perspectives and challenges for bitcoin and cryptocurrencies | |
KR102248890B1 (ko) | 공개 블록체인에 기초한 추첨 및 그것의 검증을 위한 시스템 및 방법 | |
KR102366638B1 (ko) | 게임 클라이언트의 참여 증명 기반 블록체인 시스템 및 이를 이용한 블록 보상 합의 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |