KR20220010533A - 작업 증명 블록체인 네트워크 상에서의 채굴을 위한 시스템 및 방법 - Google Patents

작업 증명 블록체인 네트워크 상에서의 채굴을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20220010533A
KR20220010533A KR1020217041233A KR20217041233A KR20220010533A KR 20220010533 A KR20220010533 A KR 20220010533A KR 1020217041233 A KR1020217041233 A KR 1020217041233A KR 20217041233 A KR20217041233 A KR 20217041233A KR 20220010533 A KR20220010533 A KR 20220010533A
Authority
KR
South Korea
Prior art keywords
challenge
computer
mining
party
nodes
Prior art date
Application number
KR1020217041233A
Other languages
English (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
Priority claimed from GBGB1906893.1A external-priority patent/GB201906893D0/en
Priority claimed from GBGB1912070.8A external-priority patent/GB201912070D0/en
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20220010533A publication Critical patent/KR20220010533A/ko

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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
    • 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/3236Cryptographic 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/3239Cryptographic 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
    • 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
    • H04L2209/38
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시의 실시예들은 블록체인 네트워크, 바람직하게는 작업-증명 블록체인 상에서의 채굴의 중앙 집중화에 대한 내성과 같은 이점을 제공하는 프로토콜, 방법, 및 시스템을 제공한다. 일 실시예에 따른 방법은, 복수의 병렬화할 수 없는 도전(또는 “퍼즐”)을 생성하는 단계 및 네트워크 상의 각 채굴자에게 상기 복수의 도전 중 하나를 할당하는 단계를 포함할 수 있다. 채굴자는 그에게 할당된 도전에 대한 해를 찾기 위해 본질적으로 순차적인(병렬화할 수 없는) 알고리즘을 사용한다. 도전은 노드들의 커미티에 의해 생성되고, 새로운 세트의 도전이 각 블록에 대해 생성된다.

Description

작업 증명 블록체인 네트워크 상에서의 채굴을 위한 시스템 및 방법
본 개시는 일반적으로, 블록체인 네트워크에서 수행되는 계산 작업에 대한 처리 효율성, 신뢰성, 보안, 및 자원 요건을 개선하기 위한 방법 및 시스템을 포함한, 개선된 블록체인 네트워크 및 연관된 프로토콜에 관한 것이다. 특히, 작업 증명 프로토콜을 구현하는 블록체인 네트워크에 관한 것이다.
본 문서에서 우리는 모든 형태의 전자, 컴퓨터 기반, 분산 원장을 포함하기 위하여 '블록체인'이라는 용어를 사용한다. 이는 합의 기반(consensus-based) 블록체인 및 트랜잭션 체인 기술, 허가 및 비허가 원장, 공유 원장, 공용 및 사설 블록체인 및 그 변형을 포함한다. 다른 블록체인 구현이 제안 및 개발되었지만, 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이다. 비트코인은 본 명세서에서 편의 및 예시의 목적으로 언급될 수 있지만, 본 개시가 비트코인 블록체인과 함께 사용하는 것으로 제한되는 것은 아니며, 대안적인 블록체인 구현예 및 프로토콜이 본 개시의 범위 내에 속한다는 점에 유의해야 한다. "사용자"라는 용어는 본 명세서에서 사람 또는 프로세서-기반 자원을 지칭할 수 있다. 본 명세서에서 "비트코인"이라는 용어는 비트코인 프로토콜로부터 도출되거나 이에 기초한 모든 버전 또는 변형을 포함하는 것으로 사용된다.
블록체인은 트랜잭션으로 구성되는 블록으로 구성된 컴퓨터-기반 탈중앙화된 분산 시스템으로 구현되는 피어-투-피어(peer-to-peer) 전자 원장이다. 각 트랜잭션은 블록체인 시스템의 참여자 사이의 디지털 자산/자원의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력과 적어도 하나의 출력을 포함한다. 블록들이 함께 연결되어 처음부터 블록체인에 작성되었던 모든 트랜잭션에 대한 영구적이고 변경 불가능한 기록을 생성하도록, 각 블록에는 이전 블록의 해시(hash)가 포함된다. 트랜잭션에는 그 입력 및 출력에 내장되는 스크립트로 알려진 작은 프로그램이 포함되며, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 지정한다. 비트코인 플랫폼에서, 이러한 스크립트는 스택-기반 스크립트 언어를 사용하여 작성된다.
트랜잭션이 블록체인에 작성되려면, "유효성 검증(validated)"되어야 한다. 네트워크 상의 노드("채굴자(miner)")는 각 트랜잭션이 유효함을 보장하고, 유효하지 않은 트랜잭션은 네트워크로부터 거부되도록 한다. 노드에 설치되는 소프트웨어 클라이언트는 미사용 트랜잭션(unspent transaction)에 대하여, 그것이 블록체인 프로토콜 규칙을 따르는지 확인하고, 잠금 및 대응하는 잠금 해제 스크립트를 실행함으로써, 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 참(TRUE)으로 평가되면, 트랜잭션은 유효하다. 따라서, 트랜잭션이 블록체인에 작성되기 위해서는, i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 - 트랜잭션이 유효성 검증되면, 채굴 노드는 이를 네트워크의 다른 노드에 중계(relay)하고, ii) 채굴자에 의해 구축되는 새로운 블록에 추가되어야 하며, iii) 채굴, 즉 과거 트랜잭션의 공개 원장에 추가되어야 한다.
새로운 블록을 구축하기 위해, 채굴자들은 계산(퍼즐)에 대한 해(작업 증명(proof of work)으로, "PoW" 또는 "논스(nonce)"로 알려지기도 함)를 먼저 찾고자 하는 목적으로 자원 집약적인 작업을 수행하여 경쟁한다. 퍼즐의 난이도는 시간에 따라 조정되어 새로운 블록이 블록체인에 추가되는 속도에 영향을 미칠 수 있다. 비트코인에서, 채굴자는, 해싱될 때 네트워크 프로토콜에 의해 설정된 현재 난이도 수준 이하인 해시 값을 생성하는 PoW를 찾는 데 SHA256 해싱 알고리즘을 사용한다.
채굴자가 현재 퍼즐에 대한 PoW를 첫 번째로 찾은 경우, 해당 채굴자는 새로운 블록을 생성하고, 이를 네트워크의 다른 채굴자에게 브로드캐스트(broadcast)한다. 다른 채굴자가 이를 유효한 것으로 수락하려면 새로운 블록에 검증 가능한 PoW가 포함되어야 한다. 따라서, 채굴은, 네트워크 상의 노드가 동기화되고 블록체인의 합법적인 현재 상태에 대해 동의하도록 보장하는 합의 메커니즘을 제공한다. 이는 또한 특정 유형의 잠재적인 네트워크 공격으로부터 보호하여, 네트워크에 대한 보안을 제공한다.
비트코인의 초기에는, 채굴의 계산 요건이 충분히 낮아서 채굴자들이 표준 CPU를 포함하는 범용 컴퓨터를 사용할 수 있었다. 그러나, 더 강력한 컴퓨터를 갖는 채굴자가 덜 강력한 컴퓨터를 갖는 채굴자보다 경쟁 우위를 갖게 된다. 이러한 인센티브는 퍼즐 난이도의 역사적 증가(historical increase)와 결합되어, 주문형 집적 회로(ASIC: Application-Specific Integrated Circuit) 채굴 디바이스의 광범위한 사용으로 이어졌다. 또한, PoW 해를 찾는 데 관련된 작업을 공유하기 위해 ASIC 디바이스들의 그룹들이 연결될 수 있다. 이러한 경우, 상이한 기계를 사용하여 상이한 PoW 논스 또는 범위를 시도할 수 있다. 따라서, 채굴 알고리즘이 디바이스에 걸쳐 병렬화(parallelized)될 수 있다.
그러나, 더 강력한 디바이스는 더 비싸고, 작동 및 냉각에 더 많은 에너지가 요구된다. 또한, 일부는 하드웨어 불평등이 네트워크 내에서 채굴력(mining power)의 잠재적인 중앙 집중화를 촉진하여, 가능한 결점이나 취약성을 초래할 수 있다고 주장했다. 이러한 우려는 "ASIC-내성" 채굴 해결책의 개발에 대한 관심을 불러일으켰다. 그러나, 제안된 해결책은 충돌-내성 SHA256 해시 알고리즘을 소위 '대역폭 하드(bandwidth-hard)' 함수로 변경하기 위한 PoW 알고리즘의 수정을 포함하며, 성공이 제한적이거나 논란의 여지가 있다.
따라서, 다른 것 보다도, 비용, 에너지 사용량 및 요구되는 계산 자원을 줄이고 탈중앙화 네트워크의 이점을 유지하면서, 블록체인 네트워크 상의 경쟁 노드에 의해 제공되는 합의 메커니즘 및 보안을 어떻게 유지하는지의 기술적 도전을 해결하여야 할 필요가 있다.
본 개시는 병렬화할 수 없는(non-parallelisable) 합의 메커니즘을 사용하는 비-병렬식 채굴(NPM: non-parallelised mining) 기술, 하드웨어 및 소프트웨어 배열, 네트워킹 기술 및 방법 및 이들의 조합을 포함하는 양태 및 실시예를 제공함으로써 적어도 이러한 기술적 문제를 다룬다. 본 개시는 본질적으로 순차적인 알고리즘(inherently sequential algorithm)을 사용하여 블록체인의 상태에 대한 보안을 제공하고 합의를 확립(establish)할 수 있다.
본 명세서에서, "순차적 알고리즘"이라는 용어는 다른 처리가 병렬로 실행되지 않고 처음부터 끝까지 순차적으로 실행되어야 하는 알고리즘을 지칭하도록 사용된다. 예시로는 뉴튼(Newton)의 방법(Lipson, John D. "뉴튼의 방법: 위대한 대수 알고리즘(Newton's method: a great algebraic algorithm).” Proceeding of the third ACM symposium on Symbolic and algebraic computation. ACM, 1976.)과 같은 반복적 수치 방법과 재귀 공식(recursive formula)을 사용하여 수학적으로 표현될 수 있는 알고리즘이 포함된다.
용어 “본질적으로 순차적인” (또는 “병렬화할 수 없는”) 알고리즘은 본 명세서에서 병렬화할 수 있는 루틴/서브루틴을 사용하여 최적화될 수 없는 순차적 알고리즘을 지칭하기 위해 사용된다. 본 구는 본 기술 분야 내에서 엄격하게 정의되지 않았지만, 본 명세서에서 사용되는 정의는 문헌(Greenlaw, Raymond. "그래프 검색에 대한 응용에 대해 본질적으로 순차적인 모델 분류 알고리즘(A model classifying algorithms as inherently sequential with applications to graph searching)." Information and Computation 97.2 (1992): 133-149)에 존재하는 용어 및 정의의 직관적인 사용과 양립할 수 있음에 유의해야 한다.
또한, “계산 도전(computational challenge)” 및 “도전”이라는 용어는 당 기술 분야에서 알려져 있으며, 통상의 기술자가 용이하게 이해할 것임에 유의해야 한다. “도전”은 또한 당 업계에서 “퍼즐”로 알려져 있을 수 있다.
본 개시의 실시예들은 블록체인 네트워크와 함께 또는 블록체인 네트워크 상에서의 사용을 위한 컴퓨터-구현되는 프로토콜, 방법, 및 시스템을 제공한다. 블록체인 네트워크는 작업-증명(PoW) 블록체인 프로토콜을 구현한다. 이는, 예를 들어 비트코인 프로토콜의 버전과 같은 블록체인 프로토콜일 수 있다. 하지만, 다른 블록체인 프로토콜 및 구현예들 또한 본 개시의 범위 내에 속할 것이다.
하나 이상의 실시예에 따른 방법은, 복수의 병렬화할 수 없는 도전(또는 “퍼즐”)을 생성하는 단계 및 네트워크 상의 각각의 채굴자에게 상기 복수의 도전을 하나씩 할당하는 단계를 포함할 수 있다. 따라서, 바람직하게는, 도전은, 각 채굴자가 다른 채굴자와는 상이한 도전을 수신하도록 할당된다. 할당은, 예를 들어 복수의 도전 중에서 주어진 도전에 대한 수신자에 대해 랜덤으로 노드를 선택하는 것과 같은 임의의 적절한 방식으로 수행될 수 있지만, 다른 할당 방법이 사용될 수 있다. 도전은, 각각의 도전이 복수 내에서 고유할 가능성이 높다는 점에서 충돌 내성(collision resistant)일 수 있다. 바람직하게는, 각 채굴자는 그 다음 그들에게 할당된 도전을 푸는 시도를 한다. 그들은, 해가 복수의 도전에 대한 해 사이에서 고유하도록 도전에 데이터 또는 입력을 추가할 수 있다.
일부 실시예에서, 다자간(multiparty) 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나의 생성은 랜덤 또는 의사-랜덤 입력을 사용하는 연산에 대한 출력의 계산을 포함한다. 추가적으로 또는 대안적으로, 다자간 계산 도전 중 적어도 하나의 생성은 RSA 키 쌍의 생성을 포함할 수 있다.
바람직하게는, 채굴 노드는 이에 할당된 도전에 대한 해를 찾기 위해 본질적으로 순차적인(병렬화할 수 없는) 알고리즘을 사용해야 한다. 본질적으로 순차적인 알고리즘은 다음의 연산 중 적어도 하나를 포함할 수 있다: 반복 연산(recursive operation); 모듈러 지수화(modular exponentiation); 및/또는 반복 제곱 연산(repeated squaring operation). 이러한 알고리즘은 결과에 도달하기 위해 실행되어야 하는 사전 결정된 단계의 세트를 포함한다. 따라서, 본 개시의 실시예는, 사전 결정된 단계 또는 연산의 세트를 실행할 필요 없이, 해에 도달할 때까지 채굴자가 단순히 해싱 함수를 반복하는 알려진 PoW 배열(arrangements)과는 다르다. 본질적으로 순차적인 알고리즘은 결과(해)가 생성되도록 하기 위해, 하나의 연산의 출력이 후속적인 연산에 대한 입력으로 사용될 것을 필요로 할 수 있다.
바람직하게는, 도전이 노드의 커미티(committee)에 의해 생성되고, 각 블록에 대해 새로운 세트의 도전이 생성된다. 3개 이상의 노드가 존재할 수 있고, 각각은 신뢰되는 개체이다. 노드는 결탁(collude)할 수 없다는 점에서 서로로부터 독립적이다. 따라서, 사이클 또는 루프가 형성되어, 각 사이클에 대해 복수의 추가적인 (새로운) 다자간 계산 도전이 생성될 수 있다. 각각의 새로운 세트의 도전은 각 사이클의 시작 시에 채굴자에게 분배된다. 따라서, 각 채굴자는 각 사이클의 시작 시에 새로운 도전을 수신할 수 있다. 사이클은 새로운 도전이 채굴 노드에 할당되도록 반복될 수 있다. 바람직하게는, 사이클은 블록체인에 추가될 각각의 새로운 블록에 대해 반복된다. 따라서, 채굴 노드 중 하나가 이전 사이클 중에 이에 할당된 도전에 대한 해를 찾았을 경우(즉, 그들이 트랜잭션의 다음 블록을 채굴할 수 있도록 하는 작업-증명을 제공했을 경우), 새로운 세트의 도전이 생성되고, 사이클이 다시 시작된다.
바람직하게는, 복수의 다자간 계산 도전 및/또는 복수의 추가적인 다자간 계산 도전의 생성은 적어도 부분적으로 복수의 컴퓨터-기반 개체에 의해 수행된다. 이는, 세트/더 큰 복수의 컴퓨터-기반 개체로부터 선택되는 개체들의 서브세트일 수 있다. 환언하면, 노드의 커미티가 도전을 생성하는 데 사용될 수 있다. 하나 이상의 실시예에 따르면, 커미티는 네트워크 상의 채굴 노드의 서브 세트일 수 있다. 다른 실시예에서, 도전 생성을 수행하는 개체들의 일부만이 채굴 노드이거나 이들 중 아무도 채굴 노드가 아닐 수 있다. 일부 실시예에서, 컴퓨터-기반 개체의 서브세트는 랜덤 또는 의사-랜덤(pseudo-random)인 프로세스를 사용함으로써 복수의 컴퓨터-기반 개체들로부터 선택된다.
하나 이상의 실시예에서, 도전을 생성하는 복수의 컴퓨터-기반 개체는 사전-결정된 시간에 복수의 컴퓨터-기반 개체/더 큰 복수의 컴퓨터-기반 개체로부터 재선택될 수 있다. 이러한 시간은 전술된 사이클의 시작에 기반할 수 있다(영향 받을 수 있다).
유리하게는, 본 개시의 실시예는 (모든 채굴자가 동일한 공동의 공유된 문제를 푸는 첫번째가 되고자 시도하기보다는) 각 채굴자에 대해 고유한 본질적으로 순차적인 알고리즘의 할당 및/또는 분배를 포함한다. 따라서, 본 개시는 종래 기술에 비하면, 채굴에 대한 완전히 상이한, 반대의 접근 방식을 채택한다. 이러한 새로운 접근 방식은, 채굴자가 풀고자 시도하는 문제들 사이의 랜덤 변화량(random variance)을 제공한다. 이러한 랜덤 변화량은 예를 들어, 입력이 변화하고 랜덤하게 생성되는 해시 함수의 랜덤한 출력에 의해 제공될 수 있다. 이는, 예측하기가 어렵고, 채굴자가 모든 새로운 블록에 대하여 순차적인 알고리즘의 단계를 반복함으로써 그들에게 새롭게 할당된 문제에 대한 해를 찾아야 함을 의미한다. 요구되는 반복 횟수는 채굴자 세트 간에 다를 것이다. 이는, 어떤 채굴자가 다음 블록을 채굴할 권리를 획득하였는지 보다 확실하게 확립하는 것이 가능할 수 있음을 의미한다. 이에 반해, 기존의 접근 방식은, 더 빠른 클록 속도를 갖는 채굴자가 유리함을 의미한다. 따라서, 본 개시의 실시예는 종래의 PoW 블록체인 채굴 접근 방식과의 상당한 편차를 제공한다. 따라서, 개선된 블록체인 네트워크 및 연관된 프로토콜이 제공된다. 블록체인 네트워크의 보안은 보존되면서, 효율성은 향상된다.
본 발명의 이러한 또는 다른 양태들은 본 명세서에서 설명되는 실시예로부터 명백해지고 이를 참조하여 설명될 것이다. 이제, 본 개시의 실시예가 단지 예시적인 방식으로 첨부된 도면을 참조하여 설명될 것이다.
도 1은 본 개시의 일 실시예를 나타내는 흐름도이다.
도 2는 다양한 실시예들이 구현될 수 있는 컴퓨팅 환경을 나타내는 개략도이다.
본 개시의 실시예들은 다음 특징을 갖는 '트랩-도어(trap-door)' 계산을 포함하는 채굴 퍼즐을 활용한다:
1. 일부 비밀 정보가 알려진 경우, 신속하게 수행될 수 있다;
2. 해결자(solver)가 일부 비밀 정보를 모르는 경우, 수행을 위한 설정 가능한 시간(configurable time)을 요구한다.
Rivest, Ronald L., Aid Shamir, 및 David A. Wagner, “시간-잠금 퍼즐 및 시간-해제 암호화폐(Time-lock puzzles and timed-release crypto)”(1996년) - 이하, “Rivest 등”으로 표기됨 - 에 개시된 바와 같이, '트랩 도어(trap door)'는 RSA 개인 키에 대한 지식, 또는 적어도, 개인 키를 이용하여 2개의 독립적인 값을 계산하는 능력일 수 있다.
본 개시의 하나 이상의 바람직한 실시예에 따르면, 에이전트들(노드들)의 커미티(committee) 사이에서의 다자간 계산(MPC: multi-party computation)을 통해 각 채굴자 및 각 블록에 대해 새로운 퍼즐을 생성한다. 일부 실시예에서, 커미티는 블록체인 네트워크 상의 복수의 채굴 노드로부터 랜덤 또는 의사-랜덤 방식으로 선택되는 적격의 채굴자들의 서브세트를 포함한다. 랜덤하게 생성된 RSA 모듈러스에서의 공유는 커미티 멤버들에 의해, 주어진 블록에 대한 퍼즐에 대응하는 비밀 키가 (블록이 확인될 때까지) 아무에게도 알려지지 않도록 유지된다(held). 하나 이상의 실시예에서, 커미티 및/또는 비밀 키는 각 블록 이후에 변한다.
이는 도 1에 도시되어 있으며, 신뢰되는 독립적인 노드들(예를 들어, 채굴자들)의 커미티가 단계 1에서 선택된다. 단계 2에서, 커미티의 각 노드는 병렬화할 수 없는 계산 도전을 생성한다. 이러한 도전은 병렬화할 수 없는 본질적으로 순차적인 알고리즘을 이용하여 풀어야 한다. 단계 3에서, 각 채굴자는 도전을 수신한다. 따라서, 채굴자는 단계 4에서 그들 자신의 문제에 대한 해를 찾고자 한다. 채굴자가 그의 도전에 대한 해를 찾으면, 블록체인으로 채굴되는 각 블록에 대해 사이클이 반복된다.
본 개시에 따른 배열의 구성요소는,
1. 독립적인 채굴자들의 커미티(Gilad, Yossi 등 저, “알고랜드: 암호화폐에 대한 비잔틴 합의 스케일링(Algorand: Scaling byzantine agreements for cryptocurrencies)” Proceedings of the 26th Symposium on Operating Systems Principles. ACM, 2017 참조)
2. 다자간 소수 계산(Algesheimer, Joy, Camenisch, Jan 및 Shoup, Victor, 공유된 안전-소수 곱의 생성에 대한 응용으로 효율적인 계산 모듈로 공유된 비밀(Efficient Computation Modulo a Shared Secret with Application to the Generation of Shared Safe-Prime Products) [온라인]; 및 Boneh, Dan, 및 Matthew Franklin, "공유된 RSA 키의 효율적인 생성(Efficient generation of shared RSA keys)" Annual International Cryptology Conference, Springer, Berlin, Heidelberg, 1997 참조)
3. 의사 랜덤 수 생성기로서의 해시 함수
4. 반복 제곱에 기초한 시간-잠금 퍼즐(Rivest 등 참조)
5. 해 블록(solution block)을 검증하기 위한 MPC(Algesheimer, Joy, Camenisch, Jan 및 Shoup, Victor, “공유된 안전-소수 곱의 생성에 대한 응용으로 효율적인 계산 모듈로 공유된 비밀(Efficient Computation Modulo a Shared Secret with Application to the Generation of Shared Safe-Prime Products)” [온라인] 참조)
를 포함한다.
채굴 알고리즘
병렬화할 수 없는 또는 그렇지 않은 모든 채굴 알고리즘은 근본적으로, 블록체인 상태에서의 합의를 달성하기 위해 사용되는 경우 다음의 속성을 만족해야(adhere) 한다.
속성 1: 계산의 유효한 증명(C)을 생성함으로써 채굴 알고리즘을 완료하는 프로세스는 충분히 오랜 시간이 걸려야 한다.
속성 2: 계산의 후보 증명(C)이 주어졌을 때, 유효한 C를 생성하는데 소요되는 것보다 훨씬 짧은 시간 동안 C가 계산의 유효한 증명임이 검증 가능해야 한다.
일반적으로, 채굴 알고리즘이 이러한 속성에 의해 정의되는 패러다임을 달성하도록 할 수 있는 두 가지 광범위한 방법이 존재하며, 이는 트랩- 도어 채굴 함수(trap-door mining function)를 이용하는 것, 또는 위의 두 속성 모두를 만족(observe)하는 시간-기반 조건(time-based constraints)을 이용하는 것이다.
트랩- 도어 채굴 함수
일반적으로, 양호한 단방향 트랩-도어 함수는 계산하기에 어렵지만, 일부 추가 정보와 함께 제시되면 검증하기 용이해지고, 따라서 속성 1 및 속성 2를 모두 갖는 채굴 프로세스에 매핑될 수 있다.
예를 들어, Rabin Cryptosystem에서, 개인 키(p, q)로부터 공개 키
Figure pct00001
가 생성되며, 이때 pq는 모두 소수이다. 메시지(m) 상의 서명(S, U)을 계산하는 것은 해가 다음 식을 만족하는 값(S)인 단-방향 함수이다.
Figure pct00002
유효한 S를 찾기 위한 알고리즘은 트랩-도어 알고리즘 또는 함수이며, 이는 (n, m, U)가 주어졌을 때 S를 찾는 것이 어렵지만, n의 인수분해가 알려져 있는 경우에는 쉽기 때문이다. 여기서 중요한 점은, 트랩 도어에 대해 알기 전에는 채굴이 어려워야 하고, 따라서 네트워크 메시징 레이턴시보다 충분히 오랜 시간이 걸려야 한다. 하지만, 일단 해를 찾으면, 트랩 도어는 공개되거나 공동으로 계산되어, 그 트랩 도어를 이용한 해에 대한 신속한 검증을 가능하게 할 수 있다. 본 명세서에서, 시간-잠금 퍼즐로도 알려져 있는 트랩-도어 채굴 함수는 블록체인 네트워크 상의 병렬화할 수 없는 채굴을 위한 합의 알고리즘을 구축하는 데 사용된다.
시간 잠금 퍼즐
시간-잠금 퍼즐은 완료하는 데 사전 결정된 시간이 소요되는 문제이다. 알고리즘(F h )은,
Figure pct00003
를 만족하는 일부 주어진 입력 매개변수 at에 대하여, s가 알려져 있는 경우 및 그 경우에만
Figure pct00004
이도록 하는
Figure pct00005
인 다른 알고리즘(F e )이 존재할 경우, 시간-잠금 퍼즐이라고 부른다. 또한, 컴퓨터가 입력 매개변수를 통해 알고리즘을 완료하는 데 소요되는 시간을 정확하게 제어하는 능력은, F h 가 본질적으로 순차적인 함수로서 작업이 기계들 간에 공유될 수 없도록 할 것을 요구한다.
본질적으로 순차적인 알고리즘으로서의 반복 제곱
핵심 문제는 a, t, 및 n의 특정 값에 대해
Figure pct00006
를 계산하는 것이다. 본 명세서에서는, n이 2개의 큰 소수의 곱일 때의 문제를 고려하며, t는 퍼즐의 난이도를 희망하는 수준으로 설정하기 위해 선택된다. a는 랜덤으로 선택되며, 플레이어에 따라 다를 수 있다(player specific). 퍼즐을 푸는 가장 효율적인 방법은 a 값부터 시작해서 t개의 연속적인 제곱 모듈로(successive squarings modulo) n를 수행하는 것이다. 즉, W(t)를 산출(yield)하기 위해 다음의 알고리즘을 수행한다:
알고리즘 1
0 내지 t-1i에 대하여, 다음을 계산
Figure pct00007
n의 인수분해를 알지 못한 상태에서 이러한 계산을 보다 효율적인 방식으로 수행하는 방법은 알려진 것이 없다.
RSA 반복 제곱 시간-잠금 퍼즐
Rivest 등은 반복 제곱에 기초한 시간-잠금 퍼즐을 소개하였다. 다음을 풀기 위해 앨리스(Alice)가 밥(Bob)을 위한 퍼즐을 생성하는 시나리오를 고려한다.
1. 앨리스는 합성 모듈러스(composite modulus)
Figure pct00008
를 생성하며, 이때 pq는 소수이다. 그녀는 (p, q)를 비밀로 유지한다.
2. 앨리스는 비밀로 유지되는 제2 모듈러스
Figure pct00009
를 계산한다.
3. 앨리스는 퍼즐 계산 시간(T)을 선택하고,
Figure pct00010
를 계산하며, 이때 S는 밥에 대한 제곱 속도(squaring rate)(계산 속도의 척도)이다.
4. 앨리스는 랜덤 밑수(a)를 선택하고, 다음의 알고리즘
Figure pct00011
을 이용하여 효율적으로
Figure pct00012
를 계산하며, 이때,
Figure pct00013
는 트랩-도어 함수이다.
5. 앨리스는 시간-잠금 퍼즐 (a, t, n)을 밥에게 전송하고, 그에게
Figure pct00014
를 찾을 것을 요청하며, 이때
Figure pct00015
이다.
페르마의 시험(Fermat's test)을 이용하여
Figure pct00016
이라는 것을 증명할 수 있다(shown). (p, q) 및
Figure pct00017
을 모르는 상태에서 L을 계산하는 알려져 있는 가장 신속한 방법은 알고리즘 1을 이용하는 것이다. 하지만, 단계(4a)는 퍼즐 해를 계산하는 효율을 상당히 증가시킨다.
Figure pct00018
의 시간-복잡도는
Figure pct00019
이며,
Figure pct00020
Figure pct00021
의 복잡도를 갖는다.
반복 제곱은 '본질적으로 순차적인' 프로세스로서 고려되며, 이는 상당한 정도(large degree)로 이를 병렬화할 명백한 방법이 없음을 의미한다 - Rivest 등 참조. 따라서, 퍼즐을 푸는 컴퓨터의 수가 많다고 해서 하나를 사용하는 것보다 나은 이점을 획득할 수 있는 것은 아니며, 계산 시간의 변화량은 단일 컴퓨터의 속도와 관련이 있고, 이는 퍼즐 생성기(puzzle creator)에 의해 훨씬 더 용이하게 측정될 수 있다. 환언하면, 앨리스에 의해 전송된 퍼즐은 밥의 계산 자원에 독립적인, 제어 가능한 해결 시간(solution time)을 갖는다.
소인수분해 난이도
시간-잠금 퍼즐의 구현예에서의 중요한 가정은 n의 소인수분해를 찾는 것이 퍼즐 자체를 푸는 것보다 빠르게 풀 수 없는 어려운 문제라는 것이다. 이러한 가정을 정당화(justify)하기 위해, 다음의 추론을 고려한다. 정수 인수분해 문제(integer factorization problem)를 풀기 위한 최고의 알고리즘인 일반 수체 체(NFS)(general number field sieve)는
Figure pct00022
인 시간 복잡도를 갖는다. (Buchmann, Johannes, Jiirgen Loho, 및 Jorg Zayer 저, "일반 수체 체의 구현(An implementation of the general number field sieve)." Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1993 참조).
예를 들어, 256-비트 RSA 키는 대략적으로
Figure pct00023
연산으로 인수분해될 수 있다. NFS 내 각 연산이 1개의 부동 소수점 연산과 동일하다고 가정할 때, 256-비트 키를 크래킹(cracking)하는 데에는 여전히 1 페타플롭스(petaFLOPS)(1초 당 부동 소수점 연산) 컴퓨터의 경우 대략적으로 250,000초가 소요된다. 정기적으로 업데이트되는 블록체인의 맥락에서, 새로운 블록마다 상이한 RSA 모듈러스가 생성될 것이 요구된다. 따라서, 블록 생성 시간(예를 들어, 수 분)과 동일한 시간 동안 n의 소인수분해를 찾는 것이 불가능하기만 하면 된다. RSA 키를 512-비트로 설정함으로써, 채굴 사이클 내 RSA 모듈러스의 인수 분해가 불가능하다는 것을 안전하게 가정할 수 있다.
검증 가능한 랜덤 함수
검증 가능한 랜덤 함수(VRF: verifiable random function)는 3개의(triple) 알고리즘이다(https://medium.com/algorand/algorand-releases-first-open-source-code-of-verifiable-random-function-93c2960abd61 참조):
*
Figure pct00024
- 랜덤 입력 시드(r)에서, 키 생성 알고리즘은 검증 키(VK) 및 비밀 키(SK)의 쌍을 생성한다.
*
Figure pct00025
- 평가 알고리즘은 비밀 키(SK), 메시지(m)를 입력으로 취하고, 의사 랜덤 출력 문자열(Y) 및 증명(ρ)을 생성한다.
*
Figure pct00026
- 검증 알고리즘은 검증 키(VK), 메시지(m), 출력(Y) 및 증명(ρ)을 입력으로 취한다. 이는, YSKm 입력 시 평가 알고리즘에 의해 생성되는 출력임을 검증한 경우 및 그 경우에만 1을 출력한다.
중요한 것은, 출력(Y)가 고유하다는 것이며, 이는 비밀 키가 알려지지 않는 한 찾는 것이 불가능함을 의미한다. 이하에는, 검증 가능한 랜덤 함수를 이용한 서브커미티(subcommittee) 선택의 상세한 구현예가 제공된다.
고유하고 안전한 서브커미티 선택
본 개시의 일부 실시예에 따르면, 서브커미티 선택은 검증 가능한 랜덤 함수를 복제하기 위해 ECDSA 서명을 사용한다. 프로세스는 3개의 단계로 분류될 수 있다: 설정, 의사 랜덤 값 생성 및 서브커미티 선택. 채굴자들 M 1 , …, M- N (N > 3)의 네트워크를 고려한다.
설정
단계 1: 채굴자는 각각 공개 키(PK 1 , PK 2 , …, PK N )를 구비한다.
단계 2: 채굴자는 고유 시드(S 1 , …, S N )를 선택한다. 이 값들은 전파되며, 각 공개 키에 대해 고정된다.
의사 랜덤 값 생성
단계 3: 채굴자는 각각의 새로운 블록에 대해 메시지를 생성한다. 메시지는 단순히, 이전의 블록 헤더와 연결되는 채굴자의 시드 값의 해시이다. 즉, 블록(B k )을 채굴하는 채굴자(PK i )의 경우, 그의 고유 메시지는
Figure pct00027
이고, 여기서 X k - 1 는 이전의 블록 헤더의 해시이다
Figure pct00028
.
단계 4: 채굴자는 그의 메시지 상에 ECDSA 서명을 생성한다. 즉,
Figure pct00029
. 채굴자는, 블록(B k - 1 )에 대한 타임 스탬프(time stamp) 및 서명이 생성되었던 시간 사이에 경과된 시간을 기록한다. 차이는
Figure pct00030
로 표시된다.
단계 5: 각 채굴자(M i )는 그의 증명
Figure pct00031
을 전파한다.
서브커미티 선택
단계 6: 증명 수신 시, 각 네트워크 노드는 다음을 확인한다.
1) 메시지(m i, k )가 채굴자(PK i )에 대해 유효하다.
2) 메시지(m i )에 대한 서명(s i , r i )이 PK i 에 대해 유효하다.
3)
Figure pct00032
와 증명 메시지가 수신된 시간 간의 차이가 네트워크 레이턴시(T L )보다 작다. 즉, 메시지가 수신될 때, 채굴자(j)는
Figure pct00033
를 확인한다. 여기서 T B 는 가장 최신 블록에 대한 타임 스탬프이며,
Figure pct00034
는 메시지가 채굴자(j)에 의해 수신된 시간이다. 이러한 조건은 채굴자가 서명이 생성되었던 시간을 잘못 보고하는 것을 방지한다.
4) 단 하나의 증명 메시지만이 채굴자(PK i )에 대해 승인될 것이다. 모든 추가적인 증명 메시지는 무시될 것이다.
단계 7: 서브커미티 멤버는 다음의 프로세스에 의해 선택된다.
1) 공개 키(PK i )를 갖는 채굴자에 대한 값은
Figure pct00035
이다.
2) 공개 키는 값
Figure pct00036
의 순서로 순위 매겨진다(ranked).
3) 서브커미티는 V i 의 3개의 가장 낮은 값을 갖는 채굴자들을 선택함으로써 선택된다.
V i 는 구성요소 s i
Figure pct00037
를 갖는 VRF의 출력이다. s i 는 ECDSA 서명의 의사 랜덤으로 생성된 구성요소이다. 시간 값은, s i 의 값이 서브커미티로 선택될 가능성을 높일 만큼 충분히 낮아질 때까지 채굴자가 ECDSA 임시 키(ECDSA ephemeral keys)를 통해 무차별 대입(brute-forcing)하는 것을 방지하기 위한 패널티 역할을 한다. 무차별 대입 공격을 방지하기 위한 다른 해결책이 Goldberg 및 Reyzin에 의해 조사되었으나, 이는 새로운 타원 곡선 알고리즘의 생성을 필요로 하고, 본 개시의 실시예들만큼 용이하게 구현될 수 없다(Goldberg, Sharon, 등. "검증 가능한 랜덤 함수(Verifiable random functions) (VRFs)" (2018)).
채굴자들이 서브커미티 후보 리스트에 동의하기 위해서는, 각 증명이 네트워크 전체에 전파되어야 한다. 낮은 레이턴시 및 높은 연결성을 가정할 때, 네트워크는 채굴자 값의 글로벌 리스트를 신속하게 확립할 수 있어야 하고, 따라서 서브커미티를 확립할 수 있어야 한다. 또한, 네트워크는 채굴자 당 하나의 증명 메시지(가장 처음 전송된 것)만을 승인하여, 스팸 공격의 위험을 방지할 것이다.
다자간 계산(multiparty computations)
다자간 계산은, 어떤 최종 값을 생성하기 위해 하나보다 많은 (독립적인) 개체들이 협력할 것을 요구하는 계산으로 설명될 수 있다. 이상적으로는, 개체들은 그들의 입력을 공유 또는 통신하지 않고, 그들의 입력을 비공개로 유지하면서, 이러한 최종 출력을 생성한다. 비-병렬화 채굴의 맥락에서, 그리고 본 개시의 하나 이상의 실시예들에 따르면, 다자간 계산은 반복된 제곱 시간-잠금 퍼즐에 사용되는 RSA 모듈러스의 계산을 포함할 수 있다. 이러한 실시예에서, RSA 모듈러스의 소인수분해는 임의의 단일 채굴자에 의해 제어되지 않는 것이 중요하다.
비밀 RSA 모듈러스 발생을 위한 MPC
통상의 기술자에 의해 다른 알고리즘 또는 방법이 선택될 수 있지만, 설명의 목적으로, 본 개시의 실시예들은 공유되는 소수 모듈러스(n)의 생성을 위한 Boneh 및 Franklin에 의해 개시되는 방법을 사용할 수 있다(Boneh, Dan, 및 Matthew Franklin 저, "공유된 RSA 키의 효율적인 생성(Efficient generation of shared RSA keys)." Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1997, 이하, “Boneh 등”으로 표기함). 이들의 알고리즘 3에서, 독립적인 개체들(앨리스, 밥, 및 헨리(Henry))는 임의의 크기의 RSA 모듈러스를 확립한다. 방법은 5개의 알고리즘이다.
*
Figure pct00038
- 각 개체가 2개의 랜덤한 k-비트 정수를 선택한다.
*
Figure pct00039
- 사적이고 분산형인 계산(private and distributed computation)(Boneh 등의 p. 3)을 이용하여, 3개의 서버는 (p i , q i )를 명시적으로 공유하지 않고,
Figure pct00040
를 계산한다.
이제, n이 공개되었으므로, 개체는 n이 작은 소수로 나눠질 수 없는지 확인하기 위해 나눗셈 시도(trial division), 예를 들어 임계 ECDSA 서명 구현예에서 합동 검증 가능 랜덤 비밀 공유(joint verifiable random secret sharing, JVRSS) 프로토콜에 사용되는 방법을 수행한다.
*
Figure pct00041
- 3개의 서버는 사적 분산형 계산을 사용하여, n이 사실은 2개의 소수의 곱임을 시험한다(Boneh 등의 p. 4 참조). 시험이 실패할 경우, 프로토콜은 단계 1로부터 다시 시작된다.
Boneh 등은 512, 1024, 및 2048-비트 모듈러스를 생성하는 실험에 실증적 데이터를 제공한다(Boneh 등의 p. 10의 표 2). 특히, 3명의 당사자가 (333MHz Pentium II 실행 Solaris 2.5.1를 사용하여) 512-비트 모듈러스를 생성하는 총 시간은 9초였고, 총 네트워크 트래픽은 0.18Mb였다.
n을 계산하기 위한 MPC
개인 키 (p, q)를 갖는 RSA 모듈러스 n= pq의 다자간 생성의 경우, Boneh 등에서 설명되는 방법을 적용한다. 알고리즘은 최소 수의 통신 라운드를 사용하여 랜덤하게 선택되는 3명의 채굴자의 서브커미티를 가정한다.
설정
채굴자(M 1 , M 2 , M 3 )는 고유하고 안전한 서브커미티 선택(Unique and Secure Subcommittee Selection)을 사용하여 선택된다. 채굴자는 서로 간의 직접 연결을 확립해야 하고, 이들 간의 모든 메시지는 AES 대칭 암호화를 사용하여 암호화된다. AES 키는 타원 곡선 Diffie Hellmann 키 교환을 사용하여 확립된다.
다자간 계산
단계 1: 채굴자(M 1 , M 2 , M 3 )는 정보를 비밀로 유지하면서 각각 후보 (p 1 , q 1 ), (p 2 , q 3 ) 및 (p 3 , q 3 )를 선택한다.
단계 2: 채굴자(M 1 , M 2 , M 3 )는 JVRSS를 사용하여
Figure pct00042
를 계산한다.
단계 3: 채굴자(M 1 , M 2 , M 3 )는 분산형 소수 판별(distributed primality test)(Boneh 등의 p. 4 참조)을 수행하여 n이 2개의 소수의 곱인지 여부를 결정한다.
단계 4: 단계 3의 결과로 n이 유효한 합성수(composite)임이 밝혀지면, n은 나머지 네트워크에 전파된다.
φ(n) 을 계산하기 위한 MPC
다자간 계산이 위에서 계산되었다고 할 때, 다음 단계는
Figure pct00043
을 계산하는 것이다. 이를 위해서는, 계산이 비대칭이 되기 때문에 채굴자들은 채굴자 M 1 이 누구인지 알아야 한다. 하지만, 이는 서브커미티 선택 프로세스 중에 확립될 수 있다.
단계 1: 채굴자 M 1
Figure pct00044
를 계산한다.
단계 2: M 2 M 3
Figure pct00045
를 계산한다.
단계 3: 서브커미티 멤버의 각각이 분산형 계산을 사용하여
Figure pct00046
를 계산할 수 있다.
Figure pct00047
에 주목(observe)한다.
일단
Figure pct00048
가 커미티에게 알려지면, 커미티에 있는 모두가 (p, q)를 추론할 수 있게 될 것이다. (일반성을 잃지 않고),
Figure pct00049
임이 증명될 수 있고, 따라서
Figure pct00050
는 시간-잠금 퍼즐에 대한 해가 제안된 이후까지는 계산되지 않아야 한다. 따라서, 유효한 블록을 찾을 때까지
Figure pct00051
이 커미티에 의해 공유되지 않는 것이 특히 중요하다.
병렬화할 수 없는 채굴( NPM ) 블록체인에서의 시간- 잠금형 퍼즐 채굴
본 개시의 실시예들은 PoW 블록체인 네트워크에 대한 채굴 알고리즘을 생성하기 위해 새로운 방식으로, 검증 가능한 랜덤 함수, 다자간 계산, 및 시간 잠금 퍼즐을 조합한다. 알고리즘의 목적은, 찾기는 어렵지만 일부 비밀 정보가 알려지는 경우에 검증될 수 있는 수(L)를 계산하는 것이다.
가정:
각 사이클에 대해 네트워크-범위의 합의가 달성되기 위해서는, 다음이 요구된다.
* 정직한 다수: 채굴자의 적어도 51%가 정직해야 한다. 모든 공용 블록체인 네트워크의 경우 동일한 요건이 존재한다.
* 정직한 다수의 서브커미티: 개인 키 또는 트랩 도어 함수의 누출을 방지하기 위해, 각 서브커미티의 3명의 멤버 중 2명이 정직해야 한다. 임의의 적절한 인센티브 전략을 활용할 수 있다.
* 완전한 연결성: 네트워크 내 랜덤한 서브커미티의 선택은, 다자간 계산이 효율적으로 수행될 수 있도록 채굴자 간의 완전한 연결성을 필요로 한다.
방법 1: 사전 결정된 제곱의 수
방법
단계 1: 네트워크 채굴자 M 1 , …, M n (n > 3)의 그룹은 검증 가능한 랜덤 함수를 사용하여, 3명의 (연결된) 채굴자들(일반성을 잃지 않고 M 1 , M 2 , 및 M 3 )의 서브커미티를 선택함으로써 사이클을 시작한다.
단계 2a: 채굴자들(M 1 , M 2 , 및 M 3 )은 어떤 개별적인 채굴자도 (p, q)를 계산할 수 없는 상태에서, 다자간 계산으로 n=pq를 계산한다.
단계 2b: 채굴자들(M 1 , M 2 , 및 M 3 )은 랜덤으로 선택되었다는 증명과 함께 시간-잠금 퍼즐(t, n)을 전파한다.
단계 3a: 공개 키(PK i )를 갖는 채굴자(M i )는 (t, n)을 수신하고
Figure pct00052
을 계산하며, 여기서 X는 이전 블록 헤더 해시이다.
단계 3b: 채굴자(M i )는 (t, n)을 수신하고
Figure pct00053
을 계산한다.
단계 3c (어려운 문제): 채굴자(M i )는 검증 가능하게 랜덤인
Figure pct00054
을 계산하며, 이때 L이 해다.
단계 4: (M i 가 이긴다고 가정할 때) 채굴자(M i )는 (L, L i , t i , PK i )를 전파한다. 이러한 해는 채굴자의 블록과 함께 전파될 것이다.
단계 5a: 검증자는
Figure pct00055
를 확인한다.
단계 5b: 채굴자들(M 1 , M 2 , 및 M 3 )은 안전한 다자간 계산을 사용하여,
Figure pct00056
를 계산하며, 다음 수식을 이용하여 쇼트컷(shortcut) ee i 를 효율적으로 계산한다.
Figure pct00057
단계 5c: 각 서브커미티 멤버는
Figure pct00058
Figure pct00059
을 확인할 수 있다.
단계 6: 단계 5c가 통과될 경우 블록은 서브커미티에 의해 유효한 것으로 승인된다. 블록체인을 업데이트하기 전에 해를 유효성 검증할 수 있도록 다른 채굴자들을 위해 나머지 네트워크에, 유효한 블록 및 (L, L i , t i , PK i )와 함께
Figure pct00060
가 전파될 수 있다.
분석:
제시된 스킴(scheme)은 다음의 주요 특징을 갖는다.
* 퍼즐은 2가지 값, tt i 를 이용하여 시간-잠금된다. t는 퍼즐에 대한 최소의 제곱의 수로, 네트워크-범위 난이도 매개변수로서 작용한다. t i 는 각각의 채굴자 및 각각의 새로운 블록에 고유한, 의사 랜덤으로 생성된 값이다. 또한, t i 는 바로 추론될 수 없고, 대신 해결하기 위해 몇몇 초기 계산이 필요하다.
* 퍼즐 해는 순차적 계산을 이용하여야만 풀 수 있다.
* 해시 함수 다이제스트(hash function digest)는, 퍼즐이 각각의 채굴자에 대해 고유해지도록 난수 발생기(random number generator)로서 작용한다.
계산에서 사용되는 밑수 및 지수의 의사 랜덤 특성은, 채굴자가 해를 계산하는 데 소요되는 대략적인 시간을 추정할 수는 있지만, 채굴을 시작할 때까지 정확하게 알 수는 없다는 것을 의미한다.
또한, 단계 1 내지 단계 2b, 및 단계 5c에서 시간-조건이 도입되어, 변질된, 느린, 또는 정직하지 못한 서브커미티들이 거부되고 쉽게 재선택될 수 있도록 한다. 이러한 시스템은 서브커미티 선택 시 지분 증명(proof-of-stake)의 사용을 요구하지 않는다는 점에 유의한다(다만 구현에 따라 희망될 수도 있음).
방법 2: 목표 임계값을 갖는 반복 제곱 논스
NPM 블록체인에 대한 시간-잠금 퍼즐 채굴의 대안적인 어플리케이션은 목표를 사용하여, 계산이 시작되기 전에 채굴자에 의해 제곱의 수가 사전 결정될 수 없도록 한다.
목표 및 난이도
목표
Figure pct00061
를 도입한다.
목표 값은 유효한 해로서 승인될 최대 값을 나타낸다. 이러한 값은 비트코인의 목표 난이도 매개변수와 유사하며(예를 들어, 블록 헤더에 인코딩될 수 있음), 서브커미티는 검증 시 이 값을 알게 될 것이다(https://en.bitcoin.it/wiki/Difficulty 참조).
제곱의 분포
n이 두 소수의 곱일 때, {0, …, n-1} 범위 내 모든 값의 약 1/4은 이차 잉여(quadratic residues)라는 점에 유의한다. 이러한 결과는 오일러의 판정법으로부터 도출된다(Lehmer, Emma. "오일러의 판정법에 대해(On Euler's criterion)." Journal of the Australian Mathematical Society 1.1 (1959): 64-70). 또한, 충분히 큰 랜덤한 합성 모듈러스(n)의 경우, 이차 잉여의 분포는 대략적으로 균일하며, 이는 0, 1, …, T i 범위 내 이차 잉여를 선택할 가능성이, 0, 1 …, T i 범위의
Figure pct00062
으로부터 난수를 선택할 가능성과
Figure pct00063
에서 이차 잉여를 선택할 가능성을 곱한 것과 동일하다는 것을 의미한다. 이러한 조건은,
Figure pct00064
인 주어진 입력
Figure pct00065
및 랜덤한
Figure pct00066
에 대해,
Figure pct00067
일 것을 가정하기 때문에 중요하다.
해의 해싱: 제곱의 분포의 인지되는 모호성에 대한 해결책은 L을 해시하고 그 값을 목표에 대하여 측정하는 것이다. 즉,
Figure pct00068
인지 확인하는 것이다.
방법
단계 1: 네트워크 채굴자(M 1 , …, M n (n > 3))의 그룹은 3명의 (연결된) 채굴자(일반성을 잃지 않고 M 1 , M 2 , 및 M 3 )의 서브커미티를 선택함으로써 사이클을 시작한다.
단계 2a: 채굴자(M 1 , M 2 , 및 M 3 )는 명시적으로 (p, q)를 계산하지 않고, 다자간 계산을 수행하여
n=pq
를 계산한다.
단계 2b: 채굴자(M 1 , M 2 , 및 M 3 )는 랜덤으로 선택되었다는 증명과 함께 시간-잠금 퍼즐(t, n)을 전파한다.
단계 3a: 공개 키(PK i )를 갖는 채굴자(M i )는 (t, n)을 수신하고,
Figure pct00069
을 계산하며, 이때 X는 이전 블록 헤더 해시이다.
단계 3b(어려운 문제): 채굴자(M i )는 (t, n)을 수신하고,
Figure pct00070
Figure pct00071
t i 를 찾고자 하며, L은 해, T i 는 목표이다.
단계 4: (M i 가 이긴다고 가정할 때) 채굴자(M i )는 (L, L i , t i , PK i )를 전파한다. 이러한 해는 채굴자의 블록과 함께 전파될 것이다.
단계 5a: 검증자는
Figure pct00072
를 확인한다.
단계 5b: 채굴자(M 1 , M 2 , 및 M 3 )는 안전한 다자간 계산을 이용하여
Figure pct00073
를 계산하고, 다음의 수식을 이용하여 쇼트컷 ee i 를 효율적으로 계산한다.
Figure pct00074
Figure pct00075
단계 5c: 각각의 서브커미티 멤버는
Figure pct00076
Figure pct00077
를 확인할 수 있다.
단계 6: 블록은 단계 5c가 통과되면 서브커미티에 의해 유효한 것으로 승인된다. 블록체인을 업데이트하기 전에 해를 유효성 검증할 수 있도록 다른 채굴자들을 위해 나머지 네트워크에, 유효한 블록 및 (L, L i , t i , PK i )와 함께
Figure pct00078
가 전파될 수 있다.
분석
이러한 기술은 다음의 특징을 갖는다.
* 퍼즐은 2가지 값, tt i 를 이용하여 시간-잠금된다. t는 일반적인 난이도 매개변수로 작용하고 퍼즐에 대한 균일한 최소의 제곱의 수이며, t i 는 논스와 유사하다. 이는, 채굴자가 계산을 하지 않고서는, 얼마나 많은 추가적인 제곱이 필요한지 알 수 없을 것임을 의미한다.
* 퍼즐 해(비트코인의 논스와 유사함)는 순차적 계산을 이용하여야만 찾을 수 있다.
* 퍼즐 해(논스)는 공개 키 의존적이다. 이는 논스 값을 반복하는 각 개체에 대해 새로운 공개 키가 생성되어야 함을 의미한다.
방법 1에서와 같이, 단계 1 내지 단계 2b, 및 단계 5c에서 시간-조건이 도입되어, 변질된, 느린, 또는 정직하지 못한 서브커미티들이 거부되고 쉽게 재선택될 수 있도록 한다. 또한, 논스 반복 경로는 본질적으로 순차적이고 공개 키에 의존적이므로, 채굴자가 동일한 블록 후보를 채굴한다고 해도 어떠한 이점을 획득하지 못하도록 한다. 이는, 채굴 풀을 형성하려는 유인(incentive)을 상당히 감소시킨다.
따라서, 본 개시의 실시예들은, 분산형 컴퓨터의 평면 네트워크(flat network)가 계산의 순차적 증명을 통해 합의를 확립할 수 있도록 하는 방법을 제공한다. 4개의 알고리즘이 사용될 수 있다: 검증 가능한 랜덤 함수를 사용한 서브커미티 선택, RSA 모듈러스 확립을 위한 다자간 계산, 의사-랜덤 입력을 갖는 시간-잠금 퍼즐. 본 개시의 실시예들은 또한, 소인수분해의 난이도에 기초한 퍼즐뿐 아니라 비트코인 프로토콜(해시 함수, 타원 곡선 암호화)에 고유한 암호화 프리미티브(cryptopraphic primitives)를 사용한다.
정직한 다수의 서브커미티 선택뿐 아니라, 낮은 네트워크 레이턴시 및 정직한 다수의 네트워크 참여자라는 가정이 주어졌을 때, 실시예들은 규모에 따라 경제적으로 실현 가능하고, 채굴 중앙 집중화에 대해 강한 내성이 있다.
이제 도 2로 넘어가면, 본 개시의 적어도 하나의 실시예를 실현하는 데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시 및 설명된 시스템 중 임의의 것을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스로서 사용하도록 구성될 수 있다. 도 2에 도시된 바와 같이, 컴퓨팅 디바이스(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), 액정 표시 장치(LCD)와 같은 평판 디스플레이, 발광 다이오드(LED), 또는 투사형 또는 기타 디스플레이 디바이스일 수 있다. 일반적으로, “출력 디바이스”라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 모든 가능한 종류의 디바이스 및 메커니즘을 포함하는 것으로 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는, 예를 들어 사용자의, 본 명세서에서 설명된 프로세스 및 본 명세서의 변형예들을 수행하는 어플리케이션과의 상호 작용 - 이러한 상호 작용이 적절할 수 있는 경우 - 을 용이하게 하도록 사용자 인터페이스를 제시하기 위해 사용될 수 있다.
저장 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능을 제공할 수 잇는 베이직 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터-판독 가능한 저장 매체를 제공할 수 있다. 어플리케이션(프로그램, 코드 모듈, 명령어)은 하나 이상의 프로세서에 의해 실행될 때, 본 개시의 하나 이상의 실시예들의 기능을 제공할 수 있고, 저장 서브시스템(2606)에 저장될 수 있다. 이러한 어플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 저장 서브시스템(2606)은 추가적으로, 본 개시에 따라 사용되는 데이터 저장을 위한 저장소(repository)를 제공할 수 있다. 예를 들어, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 저장 장치(storage)를 제공할 수 있다. 영구 저장 장치(2610)는 프로그램 및 데이터를 위한 영구(비-휘발성) 저장 장치를 제공할 수 있고, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자성 하드 디스크 드라이브, 연관된 이동식 매체를 갖는 하나 이상의 광학 드라이브(예를 들어, CD-ROM 또는 DVD 또는 Blud-Ray), 및 다른 유사한 저장 매체를 포함할 수 있다. 이러한 프로그램 및 데이터는 본 개시에서 설명되는 것과 같은 트랜잭션 및 블록과 연관된 데이터뿐 아니라, 본 개시에서 설명되는 하나 이상의 실시예들의 단계를 수행하는 프로그램을 포함할 수 있다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태플릿 컴퓨터, 워크스테이션, 또는 이하에서 설명되는 임의의 기타 디바이스를 포함한, 다양한 종류의 것일 수 있다. 또한, 컴퓨팅 디바이스(2600)는 하나 이상의 포트(예를 들어, USB, 헤드폰 잭, 라이트닝 커넥터 등)를 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2060)에 연결될 수 있는 디바이스는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이러한 디바이스는 광신호를 전기 신호로 전환하도록 구성될 수 있으며, 전기 신호는 처리를 위해 디바이스를 컴퓨팅 디바이스(2600)로 연결하는 포트를 통해 전송될 수 있다. 컴퓨터 및 네트워크의 항상-변화하는 특성(ever-changing nature) 으로 인해, 도 2에 도시된 컴퓨팅 디바이스(2600)에 대한 설명은 디바이스의 바람직한 실시예를 설명하려는 목적으로, 단지 특정한 예시인 것으로 의도된다. 도 2에 도시된 시스템보다 더 많거나 더 적은 구성 요소를 구비하는 다른 많은 구성이 가능하다.
전술된 실시예들은 본 발명을 제한하기보다 설명하는 것이고, 통상의 기술자는 첨부된 청구항에 의해 정의되는 본 발명의 범위로부터 벗어나지 않고 많은 대안적인 실시예를 설계할 수 있을 것임에 유의해야 한다. 청구항에서, 괄호 내에 배치되는 모든 도면 부호는 청구항을 제한하는 것으로 해석되어서는 안된다. “포함하는” 및 “포함한다” 등의 용어는 임의의 청구항 또는 명세서 전체에서 열거되는 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서, “포함한다(comprise)”는 “포함(include) 또는 구성된다”를 의미하고, “포함하는(comprising)”은 “포함(including) 또는 구성되는”을 의미한다. 요소의 단수 참조는 그러한 요소의 복수 참조를 배제하지 않으며, 그 역 또한 마찬가지이다. 본 발명은 몇 가지 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그램되는 컴퓨터에 의해 구현될 수 있다. 여러 수단을 열거하는 디바이스 청구항에서, 이러한 수단들 중 몇 가지는 하나의 동일한 하드웨어 아이템에 의해 실시될 수 있다. 단순히 특정 방법(measures)이 상이한 종속 청구항에 공통적으로 인용되었다는 사실이, 이러한 방법들의 조합은 유리하게 사용될 수 없음을 나타내지는 않는다.
본 개시의 일 실시예는 컴퓨터-구현되는 방법으로,
복수의 다자간 계산 도전을 생성하는 단계;
복수의 다자간 계산 도전의 각 도전을 작업-증명 블록체인 네트워크 상의 복수의 채굴 노드의 각 채굴 노드에 제공하는 단계
를 포함하는, 컴퓨터-구현되는 방법을 제공할 수 있다.
바람직하게는, 각 채굴 노드는 다른 노드와 상이한 도전을 수신한다. 따라서, 각 도전은, 도전이 제공되는 노드에 대해 고유할 수 있으며, 복수의 다자간 계산 도전 내 2개의 도전이 동일할 수는 없다.
복수의 채굴 노드 내 각 채굴 노드는 각자의 다자간 계산 도전에 대한 해를 찾고자 시도한다. 이는, 각 노드가 출력/값을 생성하는 것을 포함할 수 있다. 이는, 알고리즘에 대한 하나 이상의 입력을 사용함으로써 수행될 수 있다. 입력(들)은, 복수의 노드에서 각자의 입력 값을 다른 노드와 공유 또는 통신하지 않는다는 점에서, 각각의 노드에 의해 비밀 또는 비공개로 유지될 수 있다.
바람직하게는, 복수의 다자간 계산 도전 내 각 도전은, 도전에 대한 해를 찾기 위해 본질적으로 순차적인 알고리즘의 사용을 필요로 한다. 방법은,
복수의 추가적인 다자간 계산 도전을 생성하는 단계; 및/또는
복수의 추가적인 다자간 계산 도전의 각 추가적인 도전을 복수의 채굴 노드 내 각 채굴 노드에 제공하는 단계
를 더 포함할 수 있다.
바람직하게는, 이러한 단계들은, 복수의 채굴 노드 내 채굴 노드들 중 하나가 다자간 계산 도전 또는 추가적인 다자간 계산 도전에 대한 해를 찾았을 때 수행된다.
바람직하게는, 복수의 다자간 계산 도전 및/또는 복수의 추가적인 다자간 계산 도전의 생성은 적어도 부분적으로, 복수의 컴퓨터-기반 개체로부터 선택되는 컴퓨터-기반 개체의 서브세트에 의해 수행된다. 컴퓨터-기반 개체들 중 적어도 하나는 블록체인 네트워크 상의 채굴 노드일 수 있다. 컴퓨터-기반 개체들의 서브세트는 랜덤 또는 의사-랜덤 선택 프로세스에 따라 복수의 컴퓨터-기반 개체들로부터 선택될 수 있다.
다자간 계산 도전 및/또는 추가적인 다자간 계산 도전의 적어도 하나의 생성은, 랜덤 또는 의사-랜덤 입력을 사용하는 연산에 대한 출력의 계산을 포함할 수 있다. 다자간 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나의 생성은 RSA 키 쌍의 생성을 포함할 수 있다.
도전은 RSA 모듈러스의 계산을 포함할 수 있다. 바람직하게는, RSA 모듈러스는 반복 제곱 시간-잠금 퍼즐에서 사용된다.
방법은, 다자간 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나에 대한 해를 찾기 위해 본질적으로 순차적인 알고리즘을 이용하는 단계를 더 포함할 수 있다. 본질적으로 순차적인 알고리즘은 다음의 연산: 재귀 연산; 모듈러 지수화; 및/또는 반복 제곱 연산 중 적어도 하나를 포함할 수 있다.
본 발명은,
프로세서; 및
프로세서에 의한 실행의 결과로, 시스템으로 하여금, 본 명세서에서 설명되는 컴퓨터-구현되는 방법의 임의의 실시예를 수행하도록 하는 실행 가능한 명령어를 포함하는 메모리
를 포함하는 시스템 또한 제공한다.
바람직하게는, 시스템은 블록체인 네트워크 상의 복수의 노드를 포함하고, 노드 중 적어도 하나는 프로세서, 메모리, 및 실행 가능한 명령어를 포함한다.
본 발명은 또한 실행 가능한 명령어를 저장하는 비-일시적 컴퓨터-판독 가능 저장 매체를 제공하며, 비-일시적 컴퓨터-판독 가능 저장 매체에 저장되는 명령어는, 컴퓨터 시스템의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금 본 명세서에서 설명되는 컴퓨터-구현되는 방법의 일 실시예를 적어도 수행하도록 한다.

Claims (15)

  1. 컴퓨터-구현되는 방법에 있어서,
    복수의 다자간 계산 도전(multiparty computational challenges)을 생성하는 단계;
    상기 복수의 다자간 계산 도전의 각 도전을 작업-증명 블록체인 네트워크(Proof-of-Work blockchain network) 상의 복수의 채굴 노드의 각 채굴 노드에 제공하는 단계
    를 포함하는, 컴퓨터-구현되는 방법.
  2. 제1항에 있어서,
    상기 복수의 다자간 계산 도전의 각 도전은 상기 도전에 대한 해를 찾기 위해 본질적으로 순차적인 알고리즘(inherently sequential algorithm)의 사용을 필요로 하는, 방법.
  3. 제1항 또는 제2항에 있어서,
    복수의 추가적인 다자간 계산 도전을 생성하는 단계;
    상기 복수의 추가적인 다자간 계산 도전의 각 추가적인 도전을 상기 복수의 채굴 노드의 각 채굴 노드에 제공하는 단계
    를 더 포함하는, 방법.
  4. 제3항에 있어서,
    제3항의 상기 단계들은, 상기 복수의 채굴 노드의 채굴 노드들 중 하나에 의해 다자간 계산 도전 또는 추가적인 다자간 계산 도전에 대한 해가 찾아졌을 때 수행되는, 방법.
  5. 선행하는 청구항들 중 임의의 한 항에 있어서,
    상기 복수의 다자간 계산 도전 및/또는 상기 복수의 추가적인 다자간 계산 도전의 생성은, 복수의 컴퓨터-기반 개체로부터 선택되는 컴퓨터-기반 개체들의 서브세트에 의해 적어도 부분적으로 수행되는, 방법.
  6. 제5항에 있어서,
    상기 컴퓨터-기반 개체들 중 적어도 하나는 상기 블록체인 네트워크 상의 채굴 노드인, 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 컴퓨터-기반 개체들의 서브세트는 랜덤 또는 의사-랜덤 선택 프로세스에 따라 상기 복수의 컴퓨터-기반 개체로부터 선택되는, 방법.
  8. 선행하는 청구항들 중 임의의 한 항에 있어서,
    상기 다자간 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나의 생성은, 랜덤 또는 의사-랜덤 입력을 사용하는 연산에 대한 출력의 계산을 포함하는, 방법.
  9. 선행하는 청구항들 중 임의의 한 항에 있어서,
    상기 다자간 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나의 생성은, RSA 키 쌍의 생성을 포함하는, 방법.
  10. 선행하는 청구항들 중 임의의 한 항에 있어서,
    상기 다자간 계산 도전 및/또는 추가적인 다자간 계산 도전 중 적어도 하나에 대한 해를 찾기 위해 본질적으로 순차적인 알고리즘을 사용하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    상기 본질적으로 순차적인 알고리즘은 다음의 연산:
    재귀 연산(recursive operation);
    모듈러 지수화(modular exponentiation);
    반복 제곱 연산(repeated squaring operation)
    중 적어도 하나를 포함하는, 방법.
  12. 선행하는 청구항들 중 임의의 한 항에 있어서,
    상기 도전은 RSA 모듈러스의 계산을 포함하고;
    바람직하게는, 상기 RSA 모듈러스가 반복 제곱 시간-잠금 퍼즐(repeated squaring time-lock puzzle)에 사용되는, 방법.
  13. 컴퓨터-구현되는 시스템에 있어서,
    프로세서; 및
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 제1항 내지 제12항 중 어느 한 항에서 청구되는 컴퓨터-구현되는 방법의 임의의 실시예를 수행하도록 하는 실행 가능한 명령어를 포함하는 메모리
    를 포함하는, 컴퓨터-구현되는 시스템.
  14. 제13항에 있어서,
    상기 시스템은 블록체인 네트워크 상의 복수의 노드들을 포함하고, 상기 노드들 중 적어도 하나는 상기 프로세서, 메모리, 및 제13항의 실행 가능한 명령어를 포함하는, 컴퓨터-구현되는 시스템.
  15. 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서,
    컴퓨터 시스템의 프로세서에 의해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 내지 제12항 중 어느 한 항에서 청구되는 방법의 일 실시예를 적어도 수행하도록 하는 실행 가능한 명령어가 저장되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
KR1020217041233A 2019-05-16 2020-04-29 작업 증명 블록체인 네트워크 상에서의 채굴을 위한 시스템 및 방법 KR20220010533A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1906893.1 2019-05-16
GBGB1906893.1A GB201906893D0 (en) 2019-05-16 2019-05-16 Computer-Implemented system and method
GBGB1912070.8A GB201912070D0 (en) 2019-08-22 2019-08-22 Computer-implemented systems and methods
GB1912070.8 2019-08-22
PCT/IB2020/054033 WO2020229925A1 (en) 2019-05-16 2020-04-29 Systems and methods for mining on a proof-of-work blockchain network

Publications (1)

Publication Number Publication Date
KR20220010533A true KR20220010533A (ko) 2022-01-25

Family

ID=70554125

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217041233A KR20220010533A (ko) 2019-05-16 2020-04-29 작업 증명 블록체인 네트워크 상에서의 채굴을 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US11979499B2 (ko)
EP (1) EP3970049B1 (ko)
JP (1) JP2022532762A (ko)
KR (1) KR20220010533A (ko)
CN (1) CN113841149A (ko)
SG (1) SG11202111434QA (ko)
TW (1) TWI836066B (ko)
WO (1) WO2020229925A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988894B (zh) * 2021-03-22 2023-07-07 广东工业大学 一种基于分布式可验证延迟函数的区块链共识系统和方法
CN113407156B (zh) * 2021-06-15 2023-02-17 杭州溪塔科技有限公司 基于去中心化可验证延迟函数生成随机数的方法及系统
GB202201962D0 (en) * 2022-02-15 2022-03-30 Nchain Licensing Ag Blockchain transaction
WO2023163654A2 (en) * 2022-02-28 2023-08-31 Agency For Science, Technology And Research Computer-implemented method, computer program and computer-readable medium using a chameleon hash function

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4407299A (en) * 1998-05-22 1999-12-13 Certco Inc Robust efficient distributed rsa-key generation
US9495668B1 (en) * 2013-05-10 2016-11-15 EMC IP Holding Company LLC Computing solutions to a problem involving inversion of a one-way function
US9747586B1 (en) * 2016-06-28 2017-08-29 Cpn Gold B.V. System and method for issuance of electronic currency substantiated by a reserve of assets
TWI648679B (zh) * 2017-08-16 2019-01-21 永豐商業銀行股份有限公司 使用區塊鏈之證照發行管理系統與方法
US11836720B2 (en) * 2018-03-12 2023-12-05 The Pen Infinitely scalable cryptocurrency system with fast, secure verification
US20190305968A1 (en) * 2018-03-27 2019-10-03 Ca, Inc. Human-solved puzzles as proof-of-work for blockchain
US20190370793A1 (en) * 2018-06-04 2019-12-05 Decentralized Finance Labs, Inc. Hybrid consensus for blockchain using proof of work and proof of stake
US11379263B2 (en) * 2018-08-13 2022-07-05 Ares Technologies, Inc. Systems, devices, and methods for selecting a distributed framework
US11418402B1 (en) * 2019-01-17 2022-08-16 Artema Labs, Inc Robust and secure proof of space based mining
WO2020210362A1 (en) * 2019-04-08 2020-10-15 Ares Technologies, Inc. Systems, devices, and methods for machine learning using a distributed framework

Also Published As

Publication number Publication date
US20220224534A1 (en) 2022-07-14
JP2022532762A (ja) 2022-07-19
TWI836066B (zh) 2024-03-21
WO2020229925A1 (en) 2020-11-19
EP3970049B1 (en) 2024-05-22
SG11202111434QA (en) 2021-11-29
TW202046192A (zh) 2020-12-16
US11979499B2 (en) 2024-05-07
EP3970049A1 (en) 2022-03-23
CN113841149A (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
JP7430238B2 (ja) 管理者による承認を必要としない方式又はディーラーフリー方式で動作するグループ全体にわたって計算タスクを実行するためのコンピュータ実装システム及び方法
Huang et al. Scalable and redactable blockchain with update and anonymity
US11979499B2 (en) Systems and methods for mining on a Proof-of-Work blockchain network
Chang et al. A communication-efficient three-party password authenticated key exchange protocol
Zhidanov et al. Blockchain technology for smartphones and constrained IoT devices: A future perspective and implementation
Doweck et al. Multi-party timed commitments
Šimunić et al. Verifiable computing applications in blockchain
US20220217004A1 (en) Systems and methods for non-parallelised mining on a proof-of-work blockchain network
Tang et al. Privacy-preserving authentication scheme based on zero trust architecture
Wang et al. Lightweight zero-knowledge authentication scheme for IoT embedded devices
Zhou et al. An improved blockchain consensus protocol with distributed verifiable delay function
Krzywiecki et al. Security of okamoto identification scheme: a defense against ephemeral key leakage and setup
Canard et al. Toward generic method for server-aided cryptography
US20220129249A1 (en) Computer implemented method and system for pseudo-random data generator
Sober et al. Distributed key generation with smart contracts using zk-SNARKs
Chaudhary et al. Interoperable identity management protocol for multi-cloud platform
Wang et al. Mutual authentication‐based RA scheme for embedded systems
Karlsson et al. Vehicle Authentication with Threshold Signatures
Wang et al. AMC: A PoS Blockchain Consensus Protocol for Scalable Nodes
Yi et al. CCC-TM: Cross-Chain consensus committee method using a trust model
Kakei et al. Design of Enclosing Signing Keys by All Issuers in Distributed Public Key Certificate-Issuing Infrastructure
WO2021086267A1 (en) Method and system for generating time-based one time passwords
Wangsaatmadja Commitment Scheme For Bitcoin
Dady et al. Distributed privacy preserving matchmaking protocol based on dynamic interest level in mobile social networks
Karame et al. Efficient Client Puzzles based on Repeated-Squaring