KR20160106570A - 블록 마이닝 방법 및 장치 - Google Patents
블록 마이닝 방법 및 장치 Download PDFInfo
- Publication number
- KR20160106570A KR20160106570A KR1020167016434A KR20167016434A KR20160106570A KR 20160106570 A KR20160106570 A KR 20160106570A KR 1020167016434 A KR1020167016434 A KR 1020167016434A KR 20167016434 A KR20167016434 A KR 20167016434A KR 20160106570 A KR20160106570 A KR 20160106570A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- block header
- tree
- hash
- mining
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
- G06Q20/0655—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
- G06Q20/0658—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q2220/00—Business processing using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
블록 체인 마이닝 방법 및 장치. 중간-상태 생성기는 블록의 부분, 특히, 블록 헤더를 선택적으로 가변함으로써 복수의, n 개의 중간 상태들을 개발한다. 단일 메시지 확장기는 미리결정된 확장 함수에 따라 메시지를 확장함으로써 메시지 스케줄을 개발한다; 그리고 메시지 스케줄은 복수의, n 개의 압축기들에 의해 공유되며, 압축기들 각각은 미리 결정된 압축 함수에 EK라 n 개의 고유 중간 상태중 하나 및 메시지 스케줄의 함수로서 결과를 개발한다. 압축기들은 롤링된 코어거나 파이프라인 코어일 수 있다.
Description
본 출원은 2013년 11월 19일에 출원된 가출원 번호 61/906,310호("부모 가출원")와 관련되며, 해당 출원의 주제는 완전하게, 여기에 참조로서 명백하게 통합되며, 따라서 37 CFR §1.78(a)(4)에 따라, 해당 출원의 출원일의 이익을 주장한다.
본 발명은 예를 들어, 블록 체인(block chain)에서, 블록(block)을 마이닝(mining)하기 위한 장치 및 방법, 특히, 비트코인 ( Bitcoin ) 마이닝 시스템과 같은, 암호 통화 시스템(crypto currency system)에서 사용되는 방법 및 장치 모두와 관련된다.
일반적으로 이하의 설명에서, 당업자에게 익숙한 해당 분야의 특정한 용어 각각이 최초로 기재되는 경우 이탤릭체로 표기할 것이다. 또한, 우리가 새로운 것으로 믿거나 우리가 새로운 것으로 믿는다는 맥락에서 사용하는 용어를 처음 도입할 때, 우리는 그 용어를 볼드체로 표기하고 해당 용어에 대해 우리가 적용하고자 하는 정의를 제공할 것이다. 또한, 본 설명에 걸쳐, 신호, 신호 플래그, 상태 비트 또는 유사한 장치를 각각 논리 참 및 논리 거짓 상태로 묘사하는 것을 언급할 때, 때때로 우리는 용어 어써트(assert)하다 및 부정(negate)하다라는 용어를 사용할 것이며, 하나의 논리 상태에서 다른 논리 상태로의 신호의 논리적 반전을 표시하기 위해 토글(toggle)하다라는 용어를 사용할 것이다. 선택적으로, 상호 배타적인 부울 (boolean) 상태를 논리_0 및 논리_1로 지칭할 수있다. 물론, 잘 알려진 바와 같이, 이러한 신호들 모두가, 여기에 논리 참으로 설명된 신호들이 논리 거짓으로 되고, 그 반대도 수행되어 논리적 의미가 반전되는 경우에도, 안정된 시스템 동작이 획득될 수 있다. 또한, 이는 논리 상태들 각각을 나타내기 위해 특정한 전압 레벨이 선택되는 특정 시스템들과는 관련이 없다. 참조의 편의성을 위해, 우리는 맥락에 요청하는 바대로, "세트"라는 용어를 0, 하나 또는 하나 보다 많은 항목들을 의미하기 위해 사용할 것이다.
일반적으로, 분산 네트워크(decentralized network)는 블록 체인에서 공통 정보를 저장하고 참조할 수 있다. 일반적인 블록 체인에서, 각각의 블록(block)은 대략적으로 동시에 발생하며, 공통적으로 트랜잭션들(transactions)이라 불리는 정보의 단위를 포함한다. 미리정의된 프로토콜(protocol)을 사용하여, 블록들은 블록 체인의 다음 순차적 블록에서 지정된 필드(field)에 그들의 해쉬 값들(hash values)을 삽입함으로써 링크(link)된다.
블록 체인 마이닝의 프로세스들은 그 시스템이 컴퓨터 네트워크상의 모든 노드들(nodes)이 동일한 블록 체인에 대하여 동의하는 컨센서스에 이르도록 설계된다. 몇몇 블록 체인 시스템들이 제안되었으며, 어떤 블록 체인들은 현재 동작중이다. 가장 초기의, 그리고 현재 가장 널리 알려진 것들 중 하나는 비트코인(Bitcoin) 시스템이다. 비트코인 프로토콜에 따르면, 블록 후보(candidate)에 대해 유효한 작업 증명(proof-of-work)을 성공적으로 계산한 최초의 마이닝자(miner)는 그 블록 체인(때로, 대장(ledger)으로도 지칭됨)에 대해 블록을 추가하고, 보상으로 암호 통화의 새로운 유닛을 생성(generate)할 권한을 갖는다. 블록에 대한 작업 증명은 블록의 지정된 필드에 삽입되는 경우 블록의 암호화 해시 값(cryptographic hash value)이 특정 난이도 목표(difficulty target)에 도달하도록 하는 Nonce 값으로 구성된다. 암호화 해쉬 함수(cryptographic hash function)이 실질적으로 랜덤 오라클(random oracle)로서 행동하기 때문에, 유효한 Nonce를 찾기 위해 단순한 시행 착오(trial-and-error)보다 더 좋은 접근법이 아직 발견되지 않았다. 마이닝 프로세스는 따라서 스토캐스틱 (stochastic) 프로세스이다. 실제로, 특정한 마이닝자가 성공적으로 블록을 해결(solve a block)하는 확률은, 임의의 특정 시점에서도, 전체 네트워크의 해쉬 레이트에 대한 마이닝자의 해쉬 레이트(hash rate)에 비례한다.
알려진 바와 같이, 미국 국가안보국("NSA")은 보안 해쉬 알고리즘 (Secure Hash Algorithms, " SHA ")으로 지칭되는 암호 해쉬 함수들의 집합을 설계하고 공표했다. 특히, 비트코인 프로토콜은 다음 수도코드(pseudocode)에 설명된, SHA-256을 적용한다.
**********
주석 1: 모든 변수들은 32 비트 unsigned integers 이며, 그 이상은 modulo 232로 계산된다.
주석 2: 각각의 라운드 마다, 하나의 라운드 상수 k[i] 및 메시지 스케줄 어레이에 하나의 엔트리 w[i], 0 ≤i ≤63 가 존재한다.
주석 3: 암축 함수는 a 부터 h 까지, 8개의 워킹 변수들을 사용한다.
주석 4: 빅-엔디언(Big-endian) 규약은 본 수도코드에서 상수들을 표현할 때 그리고 메시지 블록 데이터를 바이트들에서 워드들로 파싱할 때 사용되며, 패딩 이후의 입력 메시지 "abc"의 최초 워드는 0x61626380 이다.
Initialize hash values: (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19)
h0 := 0x6a09e667;
h1 := 0xbb67ae85;
h2 := 0x3c6ef372;
h3 := 0xa54ff53a;
h4 := 0x510e527f;
h5 := 0x9b05688c;
h6 := 0x1f83d9ab;
h7 := 0x5be0cd19;
Initialize array of round constants: (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)
k[0..63] :=
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,
0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,
0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,
0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,
0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,
0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,
0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,
0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2;
Pre-processing:
append the bit '1' to the message;
append k bits '0';
where k is the minimum number >= 0 such that the resulting message length (modulo 512 in bits) is 448
append length of message;
(without the '1' bit or padding), in bits, as 64-bit big-endian integer (this will make the entire post-processed length a multiple of 512 bits)
Process the message in successive 512-bit chunks:
break message into 512-bit chunks;
for each chunk:
{
create a 64-entry message schedule array w[0..63] of 32-bit words;
(The initial values in w[
0..63
]
don't
matter, so many implementations zero them here)
copy chunk into first 16 words w[0..15] of the message schedule array;
Expand the first 16 words into the remaining 48 words w[
16..63
] of the message schedule array:
for i from 16 to 63:
s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3);
s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10);
w[i] := w[i-16] + s0 + w[i-7] + s1;
Initialize working variables to current hash value:
a := h0;
b := h1;
c := h2;
d := h3;
e := h4;
f := h5;
g := h6;
h := h7;
Compression function main loop:
for i from 0 to 63:
{
S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25);
ch := (e and f) xor ((not e) and g);
temp1 := h + S1 + ch + k[i] + w[i];
S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22);
maj := (a and b) xor (a and c) xor (b and c);
temp2 := S0 + maj;
h := g;
g := f;
f := e;
e := d + temp1;
d := c;
c := b;
b := a;
a := temp1 + temp2;
}
Add the compressed chunk to the current hash value:
h0 := h0 + a;
h1 := h1 + b;
h2 := h2 + c;
h3 := h3 + d;
h4 := h4 + e;
h5 := h5 + f;
h6 := h6 + g;
h7 := h7 + h;
}
Produce the final hash value (big-endian):
digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7
**********
이하에서, 참조의 편의성을 위해, 우리는 상기 수도코드에 설명된 용어를 사용하여 우리의 발명의 양상들을 지칭할 수 있다. 또한, 하나의 예로서, 우리는 다른 암호 통화 시스템들이 우리의 발명으로부터 이익을 얻을 수 있음을 인지하고 있음에도 불구하고, 우리는 우리의 명세서에서 비트코인 프로토콜에 집중할 것이다.
SHA-1, SHA-2 및 RIPEMD 패밀리들을 포함하는 많은 해쉬 함수들은 SHA-256과 유사한 방식을 공유한다. 이들 각각은 입력 메시지(message)를 메시지 스케줄(message schedule)로 확장(expand)하는 (때때로 확장 연산(expansion operation)이라 불리는) 확장 함수(expansion function)를 적용하고, 그리고나서 상기 메시지 스케줄을 (때때로 메시지 다이제스트(message digest) 혹은 단순히 다이제스트(digest)로 불리는) 해쉬 값(value) 또는 결과(result)로 압축(compress)하는 (때대로, 압축 연산(compression operation)이라 불리는) 압축 함수(compression function)를 적용한다. 일반적으로, 압축 함수는 재귀적(recursive)이고, 라운드(round)마다 메시지 스케줄의 워드(word) 하나를 압축한다. 이러한 함수들의 재귀적인 성질은 루프 언롤링 (loop unrolling) 기술에 적합하고, 하드웨어 구현들에 적용되는 경우, 전통적인 연산 엘리먼트들 (computational elements)의 파이프라인(pipelined) 구성들로 귀결된다.
일반적으로, 해쉬가 비트코인 내에서 연산되는 경우, 두 번 연산되며, 즉, (때때로 이중-SHA(double-SHA) 또는 단순히 SHA2라 불리는) SHA-256 해쉬의 SHA-256 해쉬이다. 대부분, 예를 들어, 트랜잭션들과 블록 헤더들(block headers)을 해쉬하는 경우, SHA-256 해쉬들 만이 사용된다. 그러나, 더 짧은 해쉬 다이제스트가 바람직한 경우, 예를 들어, 비트코인 주소( Bitcoin address)를 획득하기 위해 공개 키(public key)를 해쉬하는 경우, RIPEMD-160가 두 번째 해쉬로서 사용된다.
블록 체인 마이닝은, 의도적으로, 경쟁적인 특성을 가진다. 금전적인 보상은 해결된(solved) 블록들의 수에 비례하며, 이는 차례로 전체 네트워크의 해쉬 레이트에 상대적인 해쉬 레이트에 비례한다. 경쟁이 증가하면서, 마이닝자들은 해쉬 레이트에서 아주 작은 개선들이라도 공격적으로 추구하고 있다. 해쉬 레이트를 개선하기 위한 알려진 방식 하나는 요구되는 난이도 목표를 충족(satisfy)하는 (즉, 보다 낮은) 해쉬들을 위해 전체 nonce-공간(nonce-space)의 각각의 부분을 독립하여 각각 탐색(search)하는, 최대 개수의 해쉬 엔진들(hash engines)에 걸쳐 해쉬 탐색(hash search)을 산개(scatter)하는 것이다.
종종, 해쉬가 비트코인 내에서 연산되면, 해쉬된 메시지는 고정된 길이를 가진다. 이는, 예를 들어, 블록 헤더(header)들 (80 바이트(byte)) 및 해쉬 값 (32 바이트) 자신이 해쉬되는 경우에 발생한다. 해쉬 값들은 이중-SHA의 모든 응용법에서 해쉬된다. 머클 트리( Merkle tree)의 형태에서, 트리 데이터 구조(tree data structure)에 배열된 해쉬 값 쌍들(64 바이트)은 해쉬된다. 일반적으로, 고정된 길이의 메시지들을 해쉬하는데 적합한 해쉬 엔진들은 임의의 길이의 메시지들을 해쉬하는데 적합한 해쉬 엔진들과 상이하게 최적화될 수 있다.
주문형 반도체(application specific integrated circuit, "ASIC")에서 해쉬 엔진을 구현하는 경우, 핵심적인 설계 목표들은 전력, 성능 및 크기를 개선하는 것이다. 동일한 짧은 길이의 많은 메시지들이 해쉬되어야 하는 경우, 해쉬 코어(core)의 파이프라인 구현이 가능하다. 예를 들어, 도 1은 이러한 종래 기술의 파이프라인의 하나의 블록을 보여준다. 일반적인 ASIC에서, 몇몇 이러한 파이프라인 블록들은; 병렬(parallel) 혹은 직렬(serially)로, 중앙 처리 유닛(central control unit)의 제어 하에서 실현되고 동작하기에 적합하며, 이 중앙 처리 유닛은 일반적인 마이크로프로세서 유닛(microprocessor unit, "MPU") 또는 동일한 ASIC 상에서 실현되는 특수 제어기 (미도시)일 수 있다.
블록 체인 마이닝에서, 마지막 청크(chunk)(즉, nonce를 포함한 부분)만이 상이한 많은 메시지들(블록들이)이 해쉬된다. 이러한 특정한 타입의 어플리케이션에서, nonce에 의존하지 않는 한, 압축기(compressor) (즉, 압축 함수를 수행하는 하드웨어 컴포넌트)의 중간-상태(mid-state)가 미리-연산될 수 있다. 그리고 나서, nonce에 의존하는 압축기의 마지막 어플리케이션에서, 도 1의 파이프라인 코어(10)가 사용될 수 있다. 도 1에서, 우리는 버스 폭을 표시하기 위해 일반적인 표시법을 사용하여, 32-비트 더블-워드(double words, " dwords ")로서 단위들을 표시하였다. 때때로, 문맥에 따라, 압축기(14)는 세미- 해셔(semi-hasher)로서, 확장기(12) 및 압축기(14)의 조합이 풀- 해셔(full-hasher)로서 지칭될 수 있다. 우리의 발명의 목적을 위해, 우리는 코어(10)가 파이프라인 또는 롤링된 (rolled) 형태로 실현될 수 있음을 알린다.
우리는 도 2에서 종래 기술의 롤링된 코어(rolled core, 10')의 기초 하드웨어 구조를 도시하였다. 일반적으로, 이러한 구조에서, 하나의 SHA-256 라운드를 연산하기 위해 대략 67개의 사이클들이 요구되며, 이는 64개의 연산 사이클들에 초기 값들을 레지스터들에 로딩하기 위한 몇개의 추가적인 사이클들을 포함한다. 종종, 고정(constants) 판독 전용 메모리(read-only-memory; ROM)가 몇몇 코어들(10') 사이에서 공유된다. 일반적으로, 종래 기술의 특수 롤링된 코어(10')는 도 3에 도시된 바와 같이 개념화될 수 있으며 여기서 해쉬 연산 하드웨어는 복합 로직(combinational logic)의 클라우드(cloud)로서 도시된다. 더 고도하게 구조화된 종래 기술의 SHA2 파이프라인 코어(10)가 예시로서 도 4에 도시된다. 도 5에서, 우리는 일반적인 비트코인 SHA2 엔진(16)의 상위-레벨 표현을 도시하였다.
도 6에 도시된 것은 필드 크기(filed sizes)가 표시된 비트코인 블록 헤더의 포맷이다. 보여지는 바와 같이, 36만큼의 오프셋(offset)에서, 32-바이트 머클 루트 필드가 블록 헤더의 블록[0] (때때로 단순히 "B0"로 지칭됨) 및 블록[1]("B1")사이를 차지한다. 예시를 위해, 우리는 4 개의 트랜잭션을 포함하는 리프 (leaf) 세트를 가지는 3-레벨 머클 트리를 도 7에 도시하였으나, 일반적인 머클 트리는 해쉬되는 트랜잭션들의 개수에 따라 추가적인 계층적 해쉬 레벨들( hierarchial hash levels)을 가질 수 있음을 이해할 것이다. 도 8에서, 참조의 편의를 위해, 비트 코인 블록 테인 내의 일반적인 3-블록 시퀀스를 도시하였으며, 여기서 각각의 블록은 블록 헤더(도 6참조) 및 트랜잭션의 각각의 세트들 (블록 브라우징(block browsing)을 원활하게 하기 위해 명확한 텍스트(clear text)로)을 포함한다. 사용가능한 트랜잭션의 숫자가 2의 거듭제곱(power-of-two)보다 작은 상황에서, 패딩 (padding), 예를 들어, 복제 혹은 더미 트랜잭션들이 2의 거듭제곱 트리 구조를 완성하기 위해 리프 단계에 추가된다. 비트코인 프로토콜에 따라, 모든 블록의 최초 트랜잭션은 언제나 체인에 블록을 추가한 마이닝자에 의해 생성된(generated) 생성(generation) (혹은 코인베이스(coinbase)) 트랜잭션이다.
우리의 가출원에서 설명된 바와 같이, 블록 헤더에서 4-바이트 버전(Version) 필드를 파티셔닝하여(도 6 참조), 추가적인 nonce 범위로서 예를 들어, 상위 2-바이트 부분을 사용하는 것이 제안되었다. 선택적으로, 비트코인 규격은 코인베이스 또는 생성 트랜잭션에 대한 포맷에서 extraNonce 필드를 정의한다(도 16b 참조). 그러나, 비트코인 규격은 코인베이스 트랜잭션들이 대부분 리프 노드에 남아있기 때문에 extraNonce 필드를 증분시키는 것은 머클 트리의 재연산을 초래한다는 것을 인지한다. 이러한 방법에서, extraNonce가 증분되는 때마다, 전체 머클 루트가 생성되며, 따라서 전체 블록 헤더가 재처리되도록 요구된다.
현재의 하드웨어 플랫폼 설계에 대해 우리가 인식한 문제점은 하드웨어 실현에서 각가의 해쉬 코어가 모든 다른 해쉬 코어들에 독립적으로 전체 SHA-256를 수행하도록 제작되어야 한다는 요구사항이다. 복수의 압축기 인스턴스들에 의해 공유될 수 있는 단일 확장기 인스턴스를 허용하는 방법 및 장치가 필요하다.
우리 발명의 일 실시예에서, 우리는 블록 헤더에 적용되는 선택된 해쉬 함수의 함수로서 블록 헤더를 포함하는 블록을 마이닝하고, 선택된 해쉬 함수는 확장 연산 및 압축 연산을 포함하는, 방법을 제공한다. 우리의 방법에 따라, 우리는 먼저 각각 블록 헤더의 선택된 제 1 부분이 선택적으로 가변하는 함수로서 복수의(m 개)의 중간-상태들을 개발한다. 그리고나서 우리는 메시지 스케줄을 생산하기 위해 블록 헤더의 선택된 제 2 부분 상에 확장 연산을 수행한다. 마지막으로, m 개의 중간-상태들 각각에 대해, 우리는 m 개의 결과들 각각을 생산하기 위해 상기 중간-상태 및 메시지 스케줄에 압축 연산을 수행한다.
다른 일 실시예에서, 우리는 우리의 블록 마이닝 방법을 수행하도록 구성되는 장치를 제공한다.
또 다른 일 실시예에서, 블록 마이닝을 위한 우리의 방법은 프로세싱 시스템에서 실행되는 경우 프로세싱 시스템이 우리의 방법의 단계들을 수행하도록 하는 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체에 포함될 수 있다.
우리의 발명은 첨부된 도면들과 함께 특정한 바람직한 실시예들의 설명에 의해 더욱 전체적으로 이해될 수 있다:
도 1은 종래 기술의 특수 SHA 파이프라인을 블록 다이어그램 형태로 도시한다.
도 2는 종래 기술의 특수 SHA 롤링된 코어를 블록 다이어그램 형태로 도시한다.
도 3은 다른 종래 기술의 특수 SHA 롤링된 코어를 블록 다이어그램 형태로 도시한다.
도 4는 파이프라인 코어를 가지는 종래 기술의 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 5는 롤링된 코어 또는 파이프라인 코어를 가지는 종래 기술의 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 6은 비트 코인 블록 헤더의 포맷을 표 형태로 도시한다.
도 7은 비트 코인 프로토콜에서 사용되는 다중-티어 머클 트리를 블록 다이어그램 형태로 도시한다.
도 8은 블록 체인을 포함하는 비트코인 블록들의 일반적 포맷을 블록 다이어그램 형태로 도시한다.
도 9는 우리의 가출원에 개시된 우리의 발명에 따라 구성된 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 10은 우리의 가출원에 개시된 우리의 발명에 따른 하나의 가능한 하드웨어 구현을 블록 다이어그램 형태로 도시한다.
도 11은, 도 10의 실시예를 작동하고, 또한 우리의 가출원에 개시된 하나의 가능한 방법을 논리 순서도의 형태로 도시한다.
도 12는 우리의 가출원에 개시된 우리의 발명에 따라 하나의 가능한 병렬, 메시지 스케줄 공유(message schedule sharing) 실시예를 블록 다이어그램 형태로 도시한다.
도 13은 우리의 발명에 따른 하나의 가능한 계층형(cascaded), 메시지 스케줄 공유 실시예를 블록 다이어그램 형태로 도시한다.
도 14는 우리의 발명에 따른 하나의 대안적인 병렬, 파이프라인 메시지 스케줄 전-연산(message schedule pre-computation) 실시예를 블록 다이어그램 형태로 도시한다.
도 15는, 도 15a 및 15b를 포함하며, 예를 들어, 도 14에 사용하기 위해 적합한 가능한 메시지 스케줄 전-연산 엔진들을 블록 다이어그램 형태로 도시한다.
도 16은, 도 16a 및 도 16b를 포함하며, 도 7의 다중-티어 머클 트리에 대한 몇몇 가능한 형태를 블록 다이어그램 형태로 도시한다.
도 17은 우리의 발명에 따른 복수의 머클 루트들을 생성하기 위한 하나의 가능한 방법을 순서도 형태로 도시한다.
도 18은 우리의 발명에 따른, 하나의 가능한 계층적, 롤링된 코어들을 가지는 메시지 스케줄 공유 실시예를 블록 다이어그램 형태로 도시한다; 그리고
도 19는 우리의 발명에 따른, 롤링된 코어를 가지는 메시지 스케줄 전-연산 실시예를 블록 다이어그램 형태로 도시한다.
도면에서, 가능한 경우 유사한 구성요소들은 유사하게 넘버링될 것이다. 그러나, 이러한 방식은 단순히 참조의 편의성 및 불필요한 번호의 증가를 피하기 위한 것이며, 우리의 발명이 몇몇 실시예들에서 기능 또는 구조상으로 동일성을 요구한다는 것을 의도하거나 제시하고자 하는 의도는 아니다.
도 1은 종래 기술의 특수 SHA 파이프라인을 블록 다이어그램 형태로 도시한다.
도 2는 종래 기술의 특수 SHA 롤링된 코어를 블록 다이어그램 형태로 도시한다.
도 3은 다른 종래 기술의 특수 SHA 롤링된 코어를 블록 다이어그램 형태로 도시한다.
도 4는 파이프라인 코어를 가지는 종래 기술의 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 5는 롤링된 코어 또는 파이프라인 코어를 가지는 종래 기술의 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 6은 비트 코인 블록 헤더의 포맷을 표 형태로 도시한다.
도 7은 비트 코인 프로토콜에서 사용되는 다중-티어 머클 트리를 블록 다이어그램 형태로 도시한다.
도 8은 블록 체인을 포함하는 비트코인 블록들의 일반적 포맷을 블록 다이어그램 형태로 도시한다.
도 9는 우리의 가출원에 개시된 우리의 발명에 따라 구성된 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다.
도 10은 우리의 가출원에 개시된 우리의 발명에 따른 하나의 가능한 하드웨어 구현을 블록 다이어그램 형태로 도시한다.
도 11은, 도 10의 실시예를 작동하고, 또한 우리의 가출원에 개시된 하나의 가능한 방법을 논리 순서도의 형태로 도시한다.
도 12는 우리의 가출원에 개시된 우리의 발명에 따라 하나의 가능한 병렬, 메시지 스케줄 공유(message schedule sharing) 실시예를 블록 다이어그램 형태로 도시한다.
도 13은 우리의 발명에 따른 하나의 가능한 계층형(cascaded), 메시지 스케줄 공유 실시예를 블록 다이어그램 형태로 도시한다.
도 14는 우리의 발명에 따른 하나의 대안적인 병렬, 파이프라인 메시지 스케줄 전-연산(message schedule pre-computation) 실시예를 블록 다이어그램 형태로 도시한다.
도 15는, 도 15a 및 15b를 포함하며, 예를 들어, 도 14에 사용하기 위해 적합한 가능한 메시지 스케줄 전-연산 엔진들을 블록 다이어그램 형태로 도시한다.
도 16은, 도 16a 및 도 16b를 포함하며, 도 7의 다중-티어 머클 트리에 대한 몇몇 가능한 형태를 블록 다이어그램 형태로 도시한다.
도 17은 우리의 발명에 따른 복수의 머클 루트들을 생성하기 위한 하나의 가능한 방법을 순서도 형태로 도시한다.
도 18은 우리의 발명에 따른, 하나의 가능한 계층적, 롤링된 코어들을 가지는 메시지 스케줄 공유 실시예를 블록 다이어그램 형태로 도시한다; 그리고
도 19는 우리의 발명에 따른, 롤링된 코어를 가지는 메시지 스케줄 전-연산 실시예를 블록 다이어그램 형태로 도시한다.
도면에서, 가능한 경우 유사한 구성요소들은 유사하게 넘버링될 것이다. 그러나, 이러한 방식은 단순히 참조의 편의성 및 불필요한 번호의 증가를 피하기 위한 것이며, 우리의 발명이 몇몇 실시예들에서 기능 또는 구조상으로 동일성을 요구한다는 것을 의도하거나 제시하고자 하는 의도는 아니다.
도 9는 우리의 가출원에 개시된 우리의 발명에 따라 구성된 비트코인 SHA2 해쉬 엔진을 블록 다이어그램 형태로 도시한다. 도 10에서, 우리는 우리의 가출원에 개시된 우리의 발명의 기본 하드웨어 구현을 제시한다. 바람직한 실시예는 선택된 복수의, 예를 들어, 200개의, SHA256 세미-해셔들(12) 및 대응하는 복수의 풀 SHA-256 해셔들(14)을 포함하는 해쉬 엔진(16')을 실현하는 ASIC의 형태로 실현된다. 각각의 세미-해셔(12)는 각각의 풀-해셔(14)와 파이프라인된다. 각각의 해셔 파이프라인은, 하나의 세미-해셔(12)와 하나의 풀-해셔(14)를 결합하고, 클록 틱(clock-tick)마다 하나의 SHA2 결과를 출력한다. 각각의 세미-해셔(12)는 선-연산된 중간-상태를 포함하는 32-바이트 중간-상태 레지스터(18), 및 선-연산된 메시지 스케줄을 포함하는 64*4 바이트 선-연산된 메시지 스케줄 레지스터(20)를 가지며; 모든 SHA 라운드들이 하드웨어 내에서 구현되고 언롤링된다. 일반적인 것과 같이, 각각의 풀-해셔(14)는 각각의 클록 틱에서 입력 블록으로부터 메시지 스케줄을 도출(derive)하기 위한 메시지 스케줄 생성 로직을 포함한다; 그리고 또한, 란운드들이 언롤링된다. 메시지 스케줄 시프트 레지스터(12a)는 (때때로 슬롯들로 지칭되는) 16 dwords 슬라이딩 윈도우들(sliding windows)의 64-딥 푸시-다운 스택(push-down stack)에서 순차적으로 입력 블록의 메시지 스케줄을 개발하기 위해 확장기 파이프라인과 유사하게 수행하기에 적합하며, 여기서 메시지의 각각의 새로운 dword는 상단에 진입하고, 가장 오래된 dword는 하단에서 제거된다. 연산에서, 각각의 슬라이딩 윈도우는 상기 슬롯에 대응하는 해쉬 라운드를 뒤따르는 다음-더깊은(next-deeper) 슬롯으로 푸쉬 다운된다. 풀-해셔(14)의 라운드 61에서, 우리는 모든 64 라운드가 수행되기 이전에 블록에 대한 해답을 체크하는 특수 중간 비교 로직 모듈(22)을 제공한다. 해답이 발견되는 경우, 인터럽트(interrupt, "IRQ")가 발생된다(raised); 선택적으로, 모든 풀-해셔들(14)은 추가적인 해답들을 탐색하는 것일 계속하도록 허용될 수 있으며, 전력을 보존하기 위해 멈출 수 있다. 외부 마이크로프로세서(microprocessor, "MPU")(24)는 예외를 관리하고, 풀-해셔(14) 출력들을 판독하고, 그리고 블록을 해결한 출력을 찾는다. 또한, 우리는 전-연산을 위해 해셔 파이프라인의 재사용을 용이하게하는 최종-32-비트 체커(32)를 제공한다.
우리 발명의 일 실시예에 따라, 우리는 블록[0]에 존재하는 머클 루트의 28-바이트 부분을 선택적으로 가변하는 것을 제안한다. 우리의 방법은 마이닝자가 먼저 많은 상이한 유효 머클 루트가 구성되는 준비 단계(preparation stage)를 수행할 것을 요구한다. 그러나, 일반적인 방법과 반대로, 우리의 목표는 동일한 4-바이트 패턴으로 종료되는 다수의 후보 머클 루트들을 찾는 것이다. 예를 들어, 한 방법은 미리결정된, 고정된 패턴(예를 들어, 4개의 0으로 된 바이트들)을 선택하는 것이다. 다른 방법은 바람직한 패턴으로 종료되는 충분한 수의 후보 루트들이 발견될 때까지 각각의 패턴에 대한 머클 루트 후보들을 저장하는 것이다.
우리의 해쉬 엔진(16')의 동작의 기능적 흐름은, 우리가 우리의 가출원에서 설명한 바와 같이, 도 11에 도시된다. (for-loop 구조를 표시하는 들여쓰기를 포함한) 수도코드 형태에서, 그것이 동작하는 것은 다음과 같다:
**********
1. Pre-compute s mid-states MS0,..,MSs -1 by applying the first chunk processing of SHA to a block header modified by setting the Merkle-roots field to each of the s Merkle-roots MR0,..,Mrs-1.
2. Create B1 with the first 32 bits of B1 set to the fixed pattern that all MR_i have in common in their respective last 4 bytes. Set the other fields of B1 ("bits" and "time") to the appropriate values.
3. For each nonce v,
3.1. Store the nonce in B1 and pre-compute the message schedule Wv for B1.
3.1. For each i from 0 to s-1:
3.1.1. Complete the mid-state MSi to a full SHA execution using the pre-computed message schedule Wv to obtain the intermediate digest Ti,v.
3.1.2. Apply the second SHA operation to Ti,v to obtain the double-SHA digest Di,v.
3.1.3. Compare Di,v with target (if last round optimization is in use, the comparison is done within the second SHA execution engine).
**********
많은 유효한 후보 루트들을 빠르게 열거하기 위해서, 이들을 구성하는 하나의 방법은 extraNonce 필드를 증분시키고 그리고 부모(parent) 노드 해쉬들을 트리부터 루트까지 재연산하는 하는 것이다. 다른 방법은 자식 노드들을 교환(예를 들어, 좌우를 교환)하여 머클 트리의 서브-트리들을 재배열하고 그리고 루트 노드 까지 부모 노드들을 재연산하는 것이다; 이러한 방식은 트랜잭션 리프들의 치환(permute)을 포함할 수 있다. 새로운 후보 루트들이 연산될 때마다, 이는 바람직한 패턴에 대하여 체크되며, 후보 루트가 매칭되지 않는 경우, 해당 후보루트는 폐기되며, 그렇지 않은 경우 저장된다. 우리의 가출원에서 언급된 바와 같이, 이러한 기술은 마이닝자가 동일하게 종료되는 s 개의 구성요소를 획득하기 위해 약 s*2^32*log2(Q) SHA2 해쉬 다이제스트를 수행하여야 함을 요구하며, 여기서 머클-트리에 포함되는 Q 개의 트랜잭션들이 존재한다.
우리의 가출원에서 설명된 바와 같이, 우리는 선-선-생성된 머클 서브-트리들의 두 개의 세트를 결합하여 더 나은 성능을 달성하는 것을 제안한다. (동적으로 생성된 머클 서브-트리들이 결합될 수 있다 하더라도, 우리는 이것이 일반적으로 더 성능이 낮음을 발견했다) 우리의 준비 단계는 3가지 단계로 수행된다:
1. 우리 준비 단계의 첫 단계에서, 우리는 머클-트리의 트랜잭션 세트들을 선택적으로 재배열함으로써, 또는, 아마도, 모든 진행중인 트랜잭션들의 풀로부터 트랜잭션들의 상이한 세트들을 선택함으로써, K1 노드 해쉬들을 개발한다. 이는 약 (K1+1)*log2(#Q1) 개의 SHA2 연산들에서 달성될 수 있으며, 여기서 Q1은 트랜잭션 해수들의 세트이고, #Q1은 세트에서 트랜잭션 해쉬들(즉, 리프 노드들)의 개수이며, 이는 Q1 개의 트랜잭션들에 대한 트리가 구성되면, 새로운 루트는 자식 노드들을 교환함으로써 획득될 수 있으며, 각각의 부모 노드들을 연산하는 것은 평균적으로 log2(#Q1) 개의 SHA2 해쉬 다이제스트들을 요구하기 때문이다. 부모 노드 해쉬들만이 저장될 필요가 있으며, 실제 트리들은 이후에 메모리로부터 제거될 수 있다.
2. 우리의 준비 단계의 두 번째 단계에서, 노드 서브-트리들의 세트의 K2 개의 부모 노드 해쉬 다이제스트들의 세트를 개발하며, 여기서 트랜잭션의 세트는 Q2이고, 트랜잭션들(리프 노드들)의 개수는 #Q2 = #Q1 이다. (상기 언급된 바와 같이,이는 비트코인 머클 루트들이 트리의 빈 노드들을 채우기 위해 중복 트랜잭션 해쉬들을 사용하기 때문에 언제나 가능하다) Q1 및 Q2 세트들은 서로교차(intersect)하지 않으며, Q1의 배열과 Q2의 임의의 배열의 연쇄(concatenation)에 의해 생성된 트랜잭션의 임의의 배열들은 트랜잭션들의 유효한 배열이어야 함을 주목하라. 또한, Q1 트랜잭션들의 거의 모든 가능한 배열들은, 대부분의 마이닝자들이 블록 내의 다른 트랜잭션에 의존하는 트랜잭션을 가지는 블록들을 생성하지 않기 때문에 일반적으로 유효함을 주목하라. (유일한 예외는 생성 트랜잭션이 언제나 최초인 경우이다)
Q1에 대하여, 좌 서브-트리들의 (#Q1-1)! 개의 가능한 후보 루트들이 존재한다(3628800 개의 가능한 배열들이 존재한다).
Q2에 대하여, 단순함을 위해, 우리는 반복되는 트랜잭션 해쉬들이 존재하지 않는 다고 가정할 수 있다(즉, #Q1+#Q2 는 2의 거듭제곱). 이는 따라서 우 서브-트리들의 (#Q2)! 개의 가능한 후보 루트들이 존재한다는 것을 따른다. 만약 우리가 #Q1=#Q2=11라고 한다면, 좌측 세트로부터의 구성요소를 우측 세트로부터의 구성요소와 결합하여 쉽게 계산될 수 있는 적어도 2^46개의 가능한 후보 루트들이 존재한다. K1 및 K2는 그렇게 클 필요가 없으며, 가능한 배열의 작은 서브셋을 나타낼 수 있으며, #Q1 및 #Q2의 높은 값을 사용할 수 있음에 주목하라.
3. (일반적으로, 예를 들어, 우리의 해쉬 엔진(16')에 의해 수행되는) 우리의 준비 상태의 세 번째 단계에서, 제 1 세트의 하나의 부모의 해쉬들은 제 2 세트의 부모(하나의 좌 노드와 우 노드)와 반복적으로 결합되며, 루트 노드 해쉬를 획득하기 위해 SHA2 해쉬된다. 각각의 조합은 테이블로부터 2개의 해쉬들을 획득하여 SHA2 연산을 수행하는 것만을 요구한다.
도 12에 도시된 것은 동기화되어 동작하는 압축기들(14a 및 14b)의 쌍들과 동일한 메시지 스케줄을 공유하는데 적합한 하나의 확장기(12)를 포함하는, 도 9의 시스템에 사용하기에 적합한 코어(10)이다. 상기 설명된 바와 같이, 압축기들(14)의 각각은 예를 들어, 우리의 후보 루트 생성 프로세스를 이용하여 생성된 고유의 중간-상태로 시작한다. 해쉬 프로세스가 압축기들(14)을 통해 동기화되어 아래로 진행되면서, 메시지 스케줄 워드들이 확장기(12)를 통해 병렬로 아래로 진행한다. 완료되면, 각각의 압축기(14)는 각각의 고유한 출력 상태(Out State)를 전달한다. 우리의 기본 구조에서와 같이, 중간-상태들은 전체 nonce 범위에 걸쳐 상수로 유지되는 반면에, 메시지 스케줄 워드들 내의 nonce는 전체 파이프라인 클록 레이트에서 증분된다. 일반적인 구조와 명백하게 반대로, 우리의 해쉬 엔진(16')은 오직 단일한 공유 확장기(12)를 요구하며, 전체 시스템 하드웨어 뿐 아니라 전력 소모를 크게 감소시킨다.
도 13에 도시된 것은 복수의 동기화되어 동작하는 압축기들(14a-14b)과 동일한 메시지 스케줄을 공유하는데 적합한 하나의 확장기(12)를 포함하는, 도 9의 시스템에서 사용하기에 적합한 일반적, 계층형 코어(10)이다. 이러한 코어(10)에서, 몇몇의 압축기들(14)이 계층적으로 연결되고, 각각의 메시지 스케줄 구성요소는 압축기에서 압축기로 순차적으로, 압축기마다 (특수 하드웨어 구현에 적합한) 하나의 지연 인터벌을 지나 전달된다. 각각의 압축기(14)는 고유의 중간-상태로 시작하며, 완료되면 각각의 고유 출력 상태를 전달한다; 그러나, 동일한 메시지에 대응하는 출력 상태들은 하나의 지연 인터벌 간격을 두고 시간상으로 순차적으로 전달된다. 이러한 배열은 상-하 및 좌-우로 진행하는 작업을 이용하여 주의 깊게 대응된 2 차원 파이프라인을 포함함을 주목하라. 동작중에, 매 사이클마다, 압축기들(14) 모두는 각각의 출력 상태를, 상이한 메시지들에 대해 생성한다.
도 14에서, 우리는 우리의 메시지 스케줄 전-연산 방법의 일반적, 계층적 형태를 도시하였으며, 여기서 해쉬 엔진(16)은 복수의 압축기들(14) 각각에 대해 고유 중간 상태들을 동적으로 생성하는데 적합한 중간-상태 생성기(28) 및 각각의 중간 상태들의 대응하는 압축기들(14)의 마지막 단계로의 전달을 지연시키는데 적합한 64-단계 지연 FIFO(30)를 포함한다. 중간-상태 생성기(28)는 매 압축기 파이프 클록 마다 새로운 중간-상태를 개발하여야 하며, 각각의 중간-상태는 동일한 파이프 클록 레이트로 압축기 체인으로 전달된다. 우리의 메시지 스케줄 전-연산 해쉬 엔진(16)의 이 실시예에서, 메시지 스케줄 워드들(W0-W63)은 도 15에 우리가 도시한 예와 같은 적합한 메시지 스케줄 전-연산 엔진(32)에 의해 동적으로 개발된다. 이러한 해쉬 엔진(16)에서, 메시지 스케줄 워드들 및 nonce가 상대적으로 긴 시간 동안 상수이다. 도 15a에 도시된 실시예에서, 출력 워드들은 각각의 압축기(14)와 연관된 64개의 매시지 스케줄 레지스터들(34)의 세트에 저장된다. 우리가 도 15a에서 단일한, 공유 롤링된 메시지 확장기(32a)를 도시하였으나, 각각의 압축기(14)는 로컬 롤링된 메시지 확장기(32a) (미도시)를 갖는다. 도 15b의 대안적인 실시예에서, 각각의 압축기(14)는 함께 연합되어 메시지 스케줄 워드들을 동적으로 생성하는데 적합한 결합 로직(32b)의 클라우드를 가지고; 따라서 이 실시예에서, 레지스터들(34)을 필요로 하지 않는다. 메시지 스케줄 레지스터들(34)이 상대적으로 덜 자주 업데이트 되기 때문에, 딥 로직(32b)이 해결(resolve)하기 위한 충분한 시간이 존재할 것이다.
도 16a에서, 우리는 참조의 편의를 위해, 4개의 리프 노드들(즉, 트랜잭션들[1::4])을 가지는 단순한 3-단계 이진 머클 트리의 구조를 도시하였다. 우리의 발명에 따르면, 우리는 가능한 많은 후보 루트 해쉬들을 생산하고자 하며, 마지막 dword와 매칭되는 것들을 식별하고 저장하고자 한다. 수도코드의 형태로, 우리가 divide-and-conquer("D&C") 작업으로 지칭하는 방식은 다음과 같다:
**********
D&C Algorithm:
Input: Q = set of 2^n transactions (i.e., the leaves of the tree).
Output: L = list of k root node hash values.
1. Divide the set of leaves into two sets Q1, Q2 of size 2^(n-1);
2. Produce a list L1 of hash digests where each element is the root node of a Merkle tree built from Q1 by permuting nodes of the tree
3. Produce a list L2 of hash digests where each element is the root node of a Merkle tree built from Q2 by permuting nodes of the tree
3.1. For all x1 in L1:
3.1.1. For all x2 in L2:
3.1.1.1. Compute x = SHA2( x1 || x2) and append to L;
4. Return the list L comprising #L1*#L2 roots.
**********
참고
1) 이 흐름은 도 17에 도시된다. 내부 루프 단계 2.1.1 에서, 우리는 append 연산을 "::" 부호를 이용하여 표기하였다.
2) 우리의 기본 트랜잭션 교환 메커니즘은 도 16a에 예시로서 도시되었으며, 우 서브-트리, Q2의 트랜잭션3은 우 서브-트리, Q2의 트랜잭션4와 교환되었다.
3) 도 16b에서, 우리는 생성 트랜잭션은 항상 최-좌측 트랜잭션이어야 함을 강조하였다. 따라서, 우리의 D&C 알고리즘의 단계 1에서, 생성 트랜잭션은 Q1에 남아있도록 제한된다.
4) k1, k2가 상대적으로 작을 수 있으므로(대략 1M 리스트 구성요소를 요구함), 우리는 즉, 단계 2에서, MPU(24)에 존재하는 소프트웨어 모듈의 형태로, 우리의 D&C 알고리즘의 외부 재귀를 제외한 모든 것들을 구현하는 것을 선호한다. 개발되면, L1 및 L2는 루트 해쉬들을 생산하고 그리고 나서 우리의 기준을 만족하는 루트들에 대해 (대략 1T 리스트 구성요소 상에서) 리스트 L을 탐색하기 위해 해쉬 코어들(10)의 파이프라인으로 포워딩될 수 있다.
후보 루트 해쉬들의 세트를 빠르게 개발하기 위한 하나의 대안적인 방식은 생성 트랜잭션마다 사용가능한 extraNonce 필드를 증분하는 것이다(도 16b 참조). extraNonce 필드가 2부터 100바이트까지의 가변 길이를 가지므로, 단순히 extraNonce 필드를 이용하는 것으로 인해 후보 루트 해쉬들의 매우 큰 풀들이 쉽고 빠르게 생성될 수 있다. 여기서, 마이닝 연산을 위해 유효 nonce 범위를 증가시키기 위해 extraNonce 필드를 사용하는 것이 제안되었으나, 우리는 주어진 기준, 예를 들어, 우리의 가출원에서 우리가 개시한 바와 같이, 모든 0들 또는 임의의 다른 주어진 값에 최종 4 바이트가 매칭되는 해쉬들을 식별하는데 특별히 적합한 미리결정된 필터 함수(filter function)를 이용하여 루트 해쉬들이 필터링되도록(filtered)하는 어떠한 제안도 알지 못한다. 우리의 방법의 근본적인 이점은 B0만이 영향을 받으면서 B1의 메시지 스케줄이 선-연산되도록 한다는 것이다. 기억해야할 최종 목표는, 두 개의 우선적인 메커니즘을 활용하는 것이다: 메시지 스케줄 공유 및 메시지 스케줄 선-연산.
도 18에서, 우리는 우리가 메시지 스케줄 공유 방법론을 사용하기 위해 우리의 방법에 따라 롤링된 코어 구조를 어떻게 개조하는지를 도시하였다. 도시된 코어(10')에서, 단일 메시지 확장기(12)에 의해 개발된 메시지 스케줄들이 병렬로, 복수의 동기화되어 동작하는 압축기들(14)에 적용된다. 도 12의 실시예에서와 같이, 압축기들(14) 각각은 상이한 중간-상태들로 초기화된다; 이는 새로운 중간-상태들이 상대적으로 덜 자주 요청되고, 일반적으로 nonce 범위가 소진된 이후에 요청되기 때문에 효율적이다.
도 19에서, 우리는 우리의 메시지 스케줄 선-연산 방법론을 사용하기 위하여 우리의 방법에 따라 롤링된 코어 구조를 어떻게 개조하는지를 도시하였다. 도시된 코어(10')에서, 선-연산된 메시지들은 단일 메시지 확장기(12)에 의해 개발되고, 그리고 병렬로 복수의 계층적 압축기들(14)에 적용된다. 도 14의 실시예에서와 같이, 생성된 중간-상태들은 대략 코어 주파수(/67)의 주파수에서 동작하는 버스를 통해 중간-상태 레지스터들 각각의 세트를 통해 아래로 계층화된다. 이러한 실시예에서, 메시지 스케줄 업데이트들이 상대적으로 덜 자주 업데이트되기 때문에, 우리는 상수들을 추가하고 선-연산된 합들을 레지스터 파일에 저장할 수 있다.
우리가 특정 실시예의 맥락에서 우리의 발명을 설명하였으나, 당업자는 특정 구현에 적합하도록 하기 위해 이러한 실시예들에 대해 많은 수정들이 적용될 수 있음을 쉽게 알 수 있을 것이다. 미래에, 비트코인 블록 헤더의 다른 부분들이 이전 블록 해쉬(previous block hash)의 최초 32-비트와 같은, 확장된 nonce 공간으로서 사용가능하게 되면, 우리의 방법들 및 장치는 또한 우리의 발명에 의해 요구되는 중간-상태들의 세트를 생성하기 위해 이러한 추가 nonce 공간을 활용할 수 있다.
따라서, 우리가 블록 체인을 마이닝하기 위한 개선된 방법 및 장치를 제공하였음이 명백하다. 특히, 우리는 복수의 압축기 인스턴스들에 의해 단일 확장기 인스턴스가 공유되도록 하는 우리의 새로운 방법들 및 장치를 진술한다. 추가적으로, 우리는 최선의 종래 기술보다 일반적으로 우월한 성능을 제공하는 우리의 방법 및 장치를 진술한다.
Claims (16)
- 블록 헤더에 적용된 선택된 해쉬 함수의 함수― 상기 선택된 해쉬 함수는 확장 연산 및 압축 연산을 포함함 ―로서, 블록 헤더를 포함하는 블록을 마이닝하기 위한 방법으로서, 상기 방법은:
[1] 상기 블록 헤더의 선택된 제 1 부분을 선택적으로 가변하는 함수로서, 복수의, m 개의, 중간-상태들 각각을 개발하는 단계;
[2] 메시지 스케줄을 생산하기 위해 상기 블록 헤더의 선택된 제 2 부분 상에서 상기 확장 연산을 수행하는 단계; 및
[3] 상기 m 개의 중간-상태들 각각에 대하여, m개의 결과들 각각을 생산하기 위해 상기 중간 상태 및 상기 메시지 스케줄 상에서 상기 압축 연산을 수행하는 단계를 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
상기 블록 헤더의 상기 제 1 부분은 상기 블록 헤더의 최초 4 바이트들을 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
상기 블록 헤더의 상기 제 1 부분은 트랜잭션의 다이제스트를 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 3 항에 있어서,
생성 트랜잭션은 트랜잭션들 중 하나를 포함하고; 그리고
여기서 [1] 단계는 상기 생성 트랜잭션을 가변하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 3 항에 있어서,
[1] 단계는 선택된 트랜잭션의 선택된 부분을 가변하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 3 항에 있어서,
[1] 단계는 복수의 트랜잭션들의 배열을 가변하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 부분은 트리 데이터 구조의 루트를 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 7 항에 있어서,
상기 트리 데이터 구조는 머클 트리(Merkele tree)를 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 7 항에 있어서,
[1] 단계는:
[1.1.1] 제 1 복수의 후보 서브-트리 해쉬들로부터 좌 서브-트리 해쉬를 선택하는 단계;
[1.1.2] 제 2 복수의 후보 서브-트리 해쉬들로부터 우 서브-트리 해쉬를 선택하는 단계; 및
[1.1.3] 상기 좌 서브-트리 해쉬 및 상기 우 서브-트리 해쉬로부터 상기 트리 데이터 구조의 루트를 개발하는 단계;
를 포함하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
[1] 단계는:
[1.1] 상기 블록 헤더의 상기 제 1 부분을 가변함으로써 후보 블록 헤더를 개발하는 단계;
[1.2] 상기 후보 블록 헤더에 필터 함수를 적용하는 단계, 그리고
[1.2.1] 상기 후보 블록 헤더가 상기 필터 함수에 실패하는 경우, 상기 후보 블록 헤더를 폐기하는 단계; 그러나
[1.2.1] 그렇지 않은 경우, 상기 후보 블록 헤더의 함수로서 중간-상태를 개발하는 단계; 및
[1.3] 각각의 후보 블록 헤더의 함수로서, 복수의, m 개의, 중간-상태들 각각을 개발하기 위해 [1.1] 내지 [1.2] 단계들을 반복하는 단계;
를 포함하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 10 항에 있어서,
여기서, [1.1] 단계에서, 상기 후보 블록 헤더의 상기 제 1 부분은 28 바이트들을 포함하고, 상기 후보 블록 헤더의 제 2 부분은 4 바이트들을 포함하며, 그리고
여기서, [1.2.1] 단계에서, 상기 필터 함수는 상기 제 2 부분에 따라 후보 블록 헤더를 폐기하기 위해 선택하는 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
[2] 단계는:
[2] 메시지 스케줄 구성요소의 배열된 시퀀스를 포함하는 메시지 스케줄을 생산하기 위해 상기 블록 헤더 상에 상기 확장 연산을 수행하는 단계;
인 것을 추가적으로 특징으로 하고; 그리고
[3] 단계는:
[3] 상기 m 개의 중간-상태들 각각에 대하여, m 개의 결과들 각각을 생산하기 위하여 상기 메시지 스케줄 구성요소들의 시퀀스 상에서 상기 압축 연산을 수행하는 단계:
인 것을 추가적으로 특징으로 하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 제 1 항에 있어서,
[4] 상기 블록의 선택된 부분을 가변함으로써 수정된 블록 헤더를 선택적으로 개발하는 단계; 및
[5] [2] 내지 [4] 단계들을 선택적으로 반복하는 단계:
를 더 포함하는,
블록 헤더를 포함하는 블록을 마이닝하기 위한 방법. - 머클 트리의 루트를 생성하기 위해 블록을 마이닝하는데 사용하기 적합한 방법으로서, 상기 트리는 복수의 노드들을 가지며, 상기 방법은:
[1] 상기 노드들의 선택된 세트를 재배열함으로써 복수의 후보 서브-트리 해쉬들을 생성하는 단계;
[2] 제 1 복수의 후보 서브-트리 해쉬들로부터 좌 서브-트리 해쉬를 선택하는 단계;
[3] 제 2 복수의 후보 서브-트리 해쉬들로부터 우 서브-트리 해쉬를 선택하는 단계; 및
[4] 상기 좌 서브-트리 해쉬 및 상기 우 서브-트리 해쉬로부터 상기 트리 데이터 구조의 루트를 개발하는 단계를 포함하는,
머클 트리의 루트를 생성하기 위해 블록을 마이닝하는데 사용하기 적합한 방법. - 임의의 이전의 청구항의 방법을 수행하도록 구성되는 장치.
- 프로세싱 시스템에서 실행되는 경우, 상기 프로세싱 시스템으로 하여금 제 1 항 내지 14 항 중 어느 한 항에 따른 방법의 단계들을 수행하도록 하는 실행가능한 명령들을 포함하는, 컴퓨터 판독가능한 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361906310P | 2013-11-19 | 2013-11-19 | |
US61/906,310 | 2013-11-19 | ||
PCT/US2014/066470 WO2015077378A1 (en) | 2013-11-19 | 2014-11-19 | Block mining methods and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160106570A true KR20160106570A (ko) | 2016-09-12 |
KR102137956B1 KR102137956B1 (ko) | 2020-07-28 |
Family
ID=53180113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167016434A KR102137956B1 (ko) | 2013-11-19 | 2014-11-19 | 블록 마이닝 방법 및 장치 |
Country Status (11)
Country | Link |
---|---|
US (1) | US11113676B2 (ko) |
EP (1) | EP3095044B1 (ko) |
KR (1) | KR102137956B1 (ko) |
CN (2) | CN106415530A (ko) |
CY (1) | CY1123686T1 (ko) |
DK (1) | DK3095044T3 (ko) |
ES (1) | ES2836139T3 (ko) |
PT (1) | PT3095044T (ko) |
RS (1) | RS61234B1 (ko) |
SI (1) | SI3095044T1 (ko) |
WO (1) | WO2015077378A1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018207975A1 (ko) * | 2017-05-12 | 2018-11-15 | 주식회사 써트온 | 블록체인 시스템 및 블록체인 생성 방법 |
KR20190055666A (ko) * | 2017-11-15 | 2019-05-23 | 한전케이디엔주식회사 | 블록체인을 이용한 스마트그리드 이종 데이터 보안 저장 방법 |
KR20190113761A (ko) * | 2016-11-19 | 2019-10-08 | 디피니티 스티프텅 | 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법 |
KR20210034072A (ko) * | 2019-01-23 | 2021-03-29 | 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 | 데이터 처리 방법 및 장치, 컴퓨터 디바이스, 및 저장 매체 |
KR20240133220A (ko) * | 2023-02-28 | 2024-09-04 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 상태 데이터베이스 성능 향상 시스템 및 이의 마이닝 방법 |
KR20240133204A (ko) * | 2023-02-28 | 2024-09-04 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 시스템 및 이의 마이닝 방법 |
Families Citing this family (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016046820A1 (en) * | 2014-09-23 | 2016-03-31 | Spondoolies Tech Ltd. | System and method for providing shared hash engines architecture for a bitcoin block chain |
US20170242475A1 (en) * | 2014-10-30 | 2017-08-24 | Spondoolies Tech Ltd. | Method and system for reducing power consumption in bitcoin mining via waterfall structure |
US10409827B2 (en) | 2014-10-31 | 2019-09-10 | 21, Inc. | Digital currency mining circuitry having shared processing logic |
US20160379212A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | System, apparatus and method for performing cryptographic operations in a trusted execution environment |
US11488147B2 (en) | 2015-07-14 | 2022-11-01 | Fmr Llc | Computationally efficient transfer processing and auditing apparatuses, methods and systems |
US10644885B2 (en) | 2015-07-14 | 2020-05-05 | Fmr Llc | Firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems |
US11436598B2 (en) | 2017-12-15 | 2022-09-06 | Fmr Llc | Social data tracking datastructures, apparatuses, methods and systems |
US10504179B1 (en) | 2015-12-08 | 2019-12-10 | Fmr Llc | Social aggregated fractional equity transaction partitioned acquisition apparatuses, methods and systems |
US10992469B2 (en) | 2015-07-14 | 2021-04-27 | Fmr Llc | Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems |
US10778439B2 (en) | 2015-07-14 | 2020-09-15 | Fmr Llc | Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems |
US11636471B2 (en) | 2017-12-15 | 2023-04-25 | Fmr Llc | Social data tracking datastructures, apparatuses, methods and systems |
US10339523B2 (en) | 2015-07-14 | 2019-07-02 | Fmr Llc | Point-to-point transaction guidance apparatuses, methods and systems |
CN105245327A (zh) * | 2015-08-21 | 2016-01-13 | 北京比特大陆科技有限公司 | 比特币工作量证明哈希计算芯片优化的方法、装置和电路 |
JP6355168B2 (ja) * | 2015-11-09 | 2018-07-11 | 日本電信電話株式会社 | ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム |
US9645604B1 (en) | 2016-01-05 | 2017-05-09 | Bitfury Group Limited | Circuits and techniques for mesochronous processing |
US9660627B1 (en) | 2016-01-05 | 2017-05-23 | Bitfury Group Limited | System and techniques for repeating differential signals |
US9514264B1 (en) | 2016-01-05 | 2016-12-06 | Bitfury Group Limited | Layouts of transmission gates and related systems and techniques |
US10262164B2 (en) | 2016-01-15 | 2019-04-16 | Blockchain Asics Llc | Cryptographic ASIC including circuitry-encoded transformation function |
CN105740440B (zh) * | 2016-02-01 | 2019-03-26 | 上海凭安网络科技有限公司 | 一种加快区块链查询的索引方法 |
CN106100825A (zh) * | 2016-05-31 | 2016-11-09 | 深圳市风云实业有限公司 | 基于fpga的高吞吐量sha‑1算法 |
US10142098B2 (en) | 2016-06-29 | 2018-11-27 | Intel Corporation | Optimized SHA-256 datapath for energy-efficient high-performance Bitcoin mining |
US10313108B2 (en) * | 2016-06-29 | 2019-06-04 | Intel Corporation | Energy-efficient bitcoin mining hardware accelerators |
CN106407008B (zh) * | 2016-08-31 | 2019-12-03 | 北京比特大陆科技有限公司 | 挖矿业务处理方法、装置和系统 |
US10783279B2 (en) * | 2016-09-01 | 2020-09-22 | Atmel Corporation | Low cost cryptographic accelerator |
CN106407795B (zh) * | 2016-09-05 | 2019-05-14 | 北京众享比特科技有限公司 | 数据存在认证系统、认证方法及验证方法 |
US10755242B2 (en) | 2016-09-23 | 2020-08-25 | Intel Corporation | Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath |
US10367645B2 (en) * | 2016-10-26 | 2019-07-30 | International Business Machines Corporation | Proof-of-work for smart contracts on a blockchain |
US10491378B2 (en) | 2016-11-16 | 2019-11-26 | StreamSpace, LLC | Decentralized nodal network for providing security of files in distributed filesystems |
US10387684B2 (en) | 2016-12-09 | 2019-08-20 | International Business Machines Corporation | Interlocked blockchains to increase blockchain security |
WO2018112949A1 (zh) * | 2016-12-23 | 2018-06-28 | 深圳前海达闼云端智能科技有限公司 | 区块链的挖矿方法、装置和节点设备 |
US10419225B2 (en) | 2017-01-30 | 2019-09-17 | Factom, Inc. | Validating documents via blockchain |
EP3355513B1 (en) * | 2017-01-31 | 2020-10-14 | Sony Corporation | Electronic node and method for maintaining a distributed ledger |
CA3090944A1 (en) * | 2017-02-08 | 2018-08-16 | Upstream Data Inc. | Blockchain mine at oil or gas facility |
US10411897B2 (en) | 2017-02-17 | 2019-09-10 | Factom, Inc. | Secret sharing via blockchains |
CN107040582B (zh) * | 2017-02-17 | 2020-08-14 | 创新先进技术有限公司 | 一种数据处理方法及装置 |
US10817873B2 (en) | 2017-03-22 | 2020-10-27 | Factom, Inc. | Auditing of electronic documents |
CN107451007B (zh) * | 2017-03-24 | 2020-11-06 | 北京瑞卓喜投科技发展有限公司 | 针对增加区块进行勘误的区块链的验证方法及系统 |
CN107451002B (zh) * | 2017-03-24 | 2020-11-10 | 北京瑞卓喜投科技发展有限公司 | 针对修改区块体数据的区块链的主动验证方法及系统 |
CN106971342A (zh) * | 2017-03-29 | 2017-07-21 | 宁夏凯速德科技有限公司 | 去中心化的电子商务平台中基于区块链技术的交易方法及系统 |
US10685399B2 (en) | 2017-03-31 | 2020-06-16 | Factom, Inc. | Due diligence in electronic documents |
US10270599B2 (en) | 2017-04-27 | 2019-04-23 | Factom, Inc. | Data reproducibility using blockchains |
CN107402824B (zh) | 2017-05-31 | 2020-06-02 | 创新先进技术有限公司 | 一种数据处理的方法及装置 |
CN109391643B (zh) * | 2017-08-03 | 2020-08-07 | 中国移动通信有限公司研究院 | 区块链轻量化处理方法、区块链节点及存储介质 |
CN107580030B (zh) * | 2017-08-18 | 2021-03-02 | 重庆邮电大学 | 一种数据管理方法、装置及服务器 |
US11316696B2 (en) * | 2017-09-29 | 2022-04-26 | R3 Ltd. | Hash subtrees for grouping components by component type |
US11170000B2 (en) | 2017-10-20 | 2021-11-09 | Intuit Inc. | Parallel map and reduce on hash chains |
CN108156219A (zh) * | 2017-11-30 | 2018-06-12 | 深圳市轱辘车联数据技术有限公司 | 一种设备找回的方法及服务器 |
US11177961B2 (en) * | 2017-12-07 | 2021-11-16 | Nec Corporation | Method and system for securely sharing validation information using blockchain technology |
CN108337461A (zh) * | 2017-12-14 | 2018-07-27 | 杭州微兔科技有限公司 | 用于区块链计算的装置、系统及装置的应用方法 |
CN108389044A (zh) * | 2018-02-28 | 2018-08-10 | 北京比特大陆科技有限公司 | 工作量证明的计算方法和系统、电子设备、程序和介质 |
US10372943B1 (en) * | 2018-03-20 | 2019-08-06 | Blockchain Asics Llc | Cryptographic ASIC with combined transformation and one-way functions |
US10256974B1 (en) | 2018-04-25 | 2019-04-09 | Blockchain Asics Llc | Cryptographic ASIC for key hierarchy enforcement |
US10783164B2 (en) | 2018-05-18 | 2020-09-22 | Factom, Inc. | Import and export in blockchain environments |
US11134120B2 (en) | 2018-05-18 | 2021-09-28 | Inveniam Capital Partners, Inc. | Load balancing in blockchain environments |
US11170366B2 (en) | 2018-05-18 | 2021-11-09 | Inveniam Capital Partners, Inc. | Private blockchain services |
CN108881433A (zh) * | 2018-06-15 | 2018-11-23 | 孙念 | 基于区块链的信息定时释放或发送方法及装置 |
CN109063049B (zh) * | 2018-07-18 | 2020-12-08 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的账号处理方法、装置、设备及存储介质 |
CN110738472B (zh) * | 2018-07-20 | 2023-10-03 | 北京航空航天大学 | 区块链的存储方法和区块链的节点 |
US11989208B2 (en) | 2018-08-06 | 2024-05-21 | Inveniam Capital Partners, Inc. | Transactional sharding of blockchain transactions |
US20200042982A1 (en) | 2018-08-06 | 2020-02-06 | Factom | Digital Contracts in Blockchain Environments |
US11328290B2 (en) | 2018-08-06 | 2022-05-10 | Inveniam Capital Partners, Inc. | Stable cryptocurrency coinage |
US11164250B2 (en) | 2018-08-06 | 2021-11-02 | Inveniam Capital Partners, Inc. | Stable cryptocurrency coinage |
US11044095B2 (en) | 2018-08-06 | 2021-06-22 | Factom, Inc. | Debt recordation to blockchains |
CN109347639B (zh) * | 2018-09-21 | 2021-06-29 | 浪潮电子信息产业股份有限公司 | 一种序列号的生成方法及装置 |
CN109214817B (zh) * | 2018-10-08 | 2021-09-03 | 莆田市烛火信息技术有限公司 | 一种基于算力寄生的区块链共识装置 |
CN109558527B (zh) * | 2019-01-02 | 2023-10-20 | 平安科技(深圳)有限公司 | 基于区块链的高考分数查询方法、装置和计算机设备 |
WO2020150011A1 (en) * | 2019-01-15 | 2020-07-23 | Blockchain Asics, Inc. | Dynamic transform in blockchain header validation |
US11032074B2 (en) * | 2019-02-11 | 2021-06-08 | Pqsecure Technologies, Llc | Cryptosystem and method using isogeny-based computations to reduce a memory footprint |
CN110060161B (zh) * | 2019-03-28 | 2021-05-28 | 众安信息技术服务有限公司 | 用于区块链交易防重的客户端服务实现方法及服务组件 |
GB2582978B (en) * | 2019-04-12 | 2022-05-04 | Nchain Holdings Ltd | Methods and devices for propagating blocks in a blockchain network |
CN110113186A (zh) * | 2019-04-19 | 2019-08-09 | 浙江万胜智能科技股份有限公司 | 一种基于区块链的混合智慧城市网络结构 |
CA3139776A1 (en) | 2019-05-15 | 2020-11-19 | Upstream Data Inc. | Portable blockchain mining system and methods of use |
CN110176998A (zh) * | 2019-05-17 | 2019-08-27 | 北京众享比特科技有限公司 | 一种工作量证明的共识方法、装置、设备和存储介质 |
US11770256B1 (en) | 2019-06-20 | 2023-09-26 | Marvell Asia Pte, Ltd. | System and method for bitcoin mining with reduced power |
CN111095338B (zh) | 2019-06-28 | 2023-06-30 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
US11438142B1 (en) | 2019-08-19 | 2022-09-06 | Marvell Asia Pte, Ltd. | System and method for mining digital currency in a blockchain network |
JP7383949B2 (ja) * | 2019-09-20 | 2023-11-21 | 富士電機株式会社 | 情報処理装置及びプログラム |
US11343075B2 (en) | 2020-01-17 | 2022-05-24 | Inveniam Capital Partners, Inc. | RAM hashing in blockchain environments |
US11164267B2 (en) | 2020-02-27 | 2021-11-02 | International Business Machines Corporation | Using blockchain to select energy-generating sources |
CA3076653A1 (en) | 2020-03-21 | 2021-09-21 | Upstream Data Inc. | Portable blockchain mining systems and methods of use |
US20220058167A1 (en) * | 2020-08-24 | 2022-02-24 | Intel Corporation | Device, system and method for version rolling with a blockchain mining engine |
US11652604B2 (en) | 2020-11-12 | 2023-05-16 | Paypal, Inc. | Blockchain data compression and storage |
CN114528246A (zh) * | 2020-11-23 | 2022-05-24 | 深圳比特微电子科技有限公司 | 运算核、计算芯片和加密货币矿机 |
CN112925504A (zh) * | 2021-02-20 | 2021-06-08 | 北京比特大陆科技有限公司 | 工作量证明的计算装置、asic芯片和工作量证明的计算方法 |
US12008526B2 (en) | 2021-03-26 | 2024-06-11 | Inveniam Capital Partners, Inc. | Computer system and method for programmatic collateralization services |
CN112950211B (zh) * | 2021-05-14 | 2021-07-30 | 腾讯科技(深圳)有限公司 | 一种交易验重方法、装置、设备以及介质 |
US12007972B2 (en) | 2021-06-19 | 2024-06-11 | Inveniam Capital Partners, Inc. | Systems and methods for processing blockchain transactions |
GB2611321A (en) | 2021-09-29 | 2023-04-05 | Quantum Blockchain Tech Plc | Message scheduling for cryptographic hashing |
US11989153B2 (en) | 2021-09-29 | 2024-05-21 | Chain Reaction Ltd. | Cryptocurrency miner with multiple power domains |
US12061513B2 (en) | 2021-11-01 | 2024-08-13 | Chain Reaction Ltd. | Cryptocurrency miner with current reducing compute engine arrangement |
US12026119B2 (en) | 2022-06-10 | 2024-07-02 | Chain Reaction Ltd. | Cryptocurrency miner and device enumeration |
US20240259184A9 (en) * | 2022-07-06 | 2024-08-01 | Block, Inc. | Computing architecture for energy-efficient hash computation |
US20240144249A1 (en) * | 2022-10-27 | 2024-05-02 | Marathon Digital Holdings | Systems And Methods For Overclocking Mining Rigs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6097811A (en) * | 1995-11-02 | 2000-08-01 | Micali; Silvio | Tree-based certificate revocation system |
KR20100047592A (ko) * | 2008-10-29 | 2010-05-10 | 한국전자통신연구원 | Sha 알고리즘 기반의 메시지 스케줄 연산 방법, 메시지 압축 연산 방법 및 이를 수행하는 암호장치 |
US20110246774A1 (en) * | 2003-10-20 | 2011-10-06 | Digital Reg Of Texas, Llc | Securing digital content system and method |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US7359846B1 (en) * | 2002-12-05 | 2008-04-15 | Cadence Design Systems, Inc. | Modeling an ASIC based on static pipeline delays |
US7921300B2 (en) * | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
US7599489B1 (en) * | 2004-02-09 | 2009-10-06 | Sun Microsystems Inc. | Accelerating cryptographic hash computations |
JP5504592B2 (ja) * | 2008-08-25 | 2014-05-28 | ソニー株式会社 | データ変換装置、およびデータ変換方法、並びにプログラム |
WO2011041610A1 (en) * | 2009-09-30 | 2011-04-07 | Zynga Game Network Inc. | Apparatuses, methods and systems for a trackable virtual currencies platform |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US8838608B2 (en) * | 2010-12-20 | 2014-09-16 | Teradata Us, Inc. | Virtual R-tree mapped to an extendible-hash based file system |
US8856547B2 (en) * | 2012-06-07 | 2014-10-07 | Intel Corporation | Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures |
US8838997B2 (en) * | 2012-09-28 | 2014-09-16 | Intel Corporation | Instruction set for message scheduling of SHA256 algorithm |
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 |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
US10409827B2 (en) * | 2014-10-31 | 2019-09-10 | 21, Inc. | Digital currency mining circuitry having shared processing logic |
-
2014
- 2014-11-19 WO PCT/US2014/066470 patent/WO2015077378A1/en active Application Filing
- 2014-11-19 EP EP14864642.5A patent/EP3095044B1/en active Active
- 2014-11-19 SI SI201431718T patent/SI3095044T1/sl unknown
- 2014-11-19 ES ES14864642T patent/ES2836139T3/es active Active
- 2014-11-19 RS RS20201503A patent/RS61234B1/sr unknown
- 2014-11-19 PT PT148646425T patent/PT3095044T/pt unknown
- 2014-11-19 DK DK14864642.5T patent/DK3095044T3/da active
- 2014-11-19 CN CN201480073590.9A patent/CN106415530A/zh active Pending
- 2014-11-19 CN CN202010216367.2A patent/CN111427891A/zh active Pending
- 2014-11-19 KR KR1020167016434A patent/KR102137956B1/ko active IP Right Review Request
-
2016
- 2016-04-28 US US15/141,063 patent/US11113676B2/en active Active
-
2020
- 2020-12-17 CY CY20201101193T patent/CY1123686T1/el unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6097811A (en) * | 1995-11-02 | 2000-08-01 | Micali; Silvio | Tree-based certificate revocation system |
US20110246774A1 (en) * | 2003-10-20 | 2011-10-06 | Digital Reg Of Texas, Llc | Securing digital content system and method |
KR20100047592A (ko) * | 2008-10-29 | 2010-05-10 | 한국전자통신연구원 | Sha 알고리즘 기반의 메시지 스케줄 연산 방법, 메시지 압축 연산 방법 및 이를 수행하는 암호장치 |
Non-Patent Citations (1)
Title |
---|
Rahul P. Naik. ‘Optimising the SHA256 Hashing Algorithm for Faster and More Efficient Bitcoin Mining’. MSc Information Security DEPARTMENT OF COMPUTER SCIENCE. 2013년 9월 2일, pp.1-61* * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190113761A (ko) * | 2016-11-19 | 2019-10-08 | 디피니티 스티프텅 | 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법 |
WO2018207975A1 (ko) * | 2017-05-12 | 2018-11-15 | 주식회사 써트온 | 블록체인 시스템 및 블록체인 생성 방법 |
KR20180124545A (ko) * | 2017-05-12 | 2018-11-21 | 주식회사 엑스블록시스템즈 | 블록체인 시스템 및 블록체인 생성 방법 |
KR20190055666A (ko) * | 2017-11-15 | 2019-05-23 | 한전케이디엔주식회사 | 블록체인을 이용한 스마트그리드 이종 데이터 보안 저장 방법 |
KR20210034072A (ko) * | 2019-01-23 | 2021-03-29 | 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 | 데이터 처리 방법 및 장치, 컴퓨터 디바이스, 및 저장 매체 |
US11574290B2 (en) | 2019-01-23 | 2023-02-07 | Tencent Technology (Shenzhen) Company Limited | Data processing method and apparatus, computer device, and storage medium |
US11935015B2 (en) | 2019-01-23 | 2024-03-19 | Tencent Technology (Shenzhen) Company Limited | Data processing method and apparatus, computer device, and storage medium |
KR20240133220A (ko) * | 2023-02-28 | 2024-09-04 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 상태 데이터베이스 성능 향상 시스템 및 이의 마이닝 방법 |
KR20240133204A (ko) * | 2023-02-28 | 2024-09-04 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 시스템 및 이의 마이닝 방법 |
WO2024181793A1 (ko) * | 2023-02-28 | 2024-09-06 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 시스템 및 이의 마이닝 방법 |
WO2024181796A1 (ko) * | 2023-02-28 | 2024-09-06 | 서울대학교산학협력단 | 상태 트라이 노드를 이용한 블록체인 상태 데이터베이스 성능 향상 시스템 및 이의 마이닝 방법 |
Also Published As
Publication number | Publication date |
---|---|
WO2015077378A1 (en) | 2015-05-28 |
CN106415530A (zh) | 2017-02-15 |
CN111427891A (zh) | 2020-07-17 |
EP3095044A1 (en) | 2016-11-23 |
CY1123686T1 (el) | 2022-03-24 |
RS61234B1 (sr) | 2021-01-29 |
SI3095044T1 (sl) | 2021-02-26 |
US20170243176A1 (en) | 2017-08-24 |
DK3095044T3 (da) | 2020-12-21 |
US11113676B2 (en) | 2021-09-07 |
ES2836139T3 (es) | 2021-06-24 |
KR102137956B1 (ko) | 2020-07-28 |
EP3095044A4 (en) | 2017-09-06 |
EP3095044B1 (en) | 2020-09-23 |
PT3095044T (pt) | 2020-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102137956B1 (ko) | 블록 마이닝 방법 및 장치 | |
JP5532560B2 (ja) | データ変換装置、およびデータ変換方法、並びにプログラム | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
US20020032551A1 (en) | Systems and methods for implementing hash algorithms | |
Feng et al. | A byte-based guess and determine attack on SOSEMANUK | |
Zong et al. | Collision attacks on round-reduced gimli-hash/ascon-xof/ascon-hash | |
JP5504592B2 (ja) | データ変換装置、およびデータ変換方法、並びにプログラム | |
US11716076B2 (en) | Circuits and methods for performing hash algorithm | |
EP2965305B1 (en) | Hash value generating device | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
WO2024007506A1 (zh) | 一种通用轻量哈希处理方法、系统及可储存介质 | |
WO2017023195A1 (ru) | Способ линейного преобразования (варианты) | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
Saravanan et al. | Theoretical survey on secure hash functions and issues | |
US8843457B2 (en) | Data conversion device, data conversion method, and program | |
Rohit et al. | Practical Forgery attacks on Limdolen and HERN | |
August et al. | PudgyTurtle: Using keystream to encode and encrypt | |
Sun et al. | How to search linear approximation for large non-surjective S-box | |
Chen et al. | Faculty of Mathematics and Statistics, Hubei Key Laboratory of Applied Mathematics, Hubei University, Wuhan, China {xiangzejun, xzeng}@ hubu. edu. cn | |
CN114676448A (zh) | Sm3算法的实现电路、方法及电子设备 | |
Júnior et al. | Application-Specific System Processor for the SHA-1 Hash Algorithm | |
KR20030001888A (ko) | 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 | |
Tuan et al. | Three stages pipelined MD5 implementation on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
J204 | Request for invalidation trial [patent] | ||
J204 | Request for invalidation trial [patent] | ||
J301 | Trial decision |
Free format text: TRIAL NUMBER: 2021100002682; TRIAL DECISION FOR INVALIDATION REQUESTED 20210908 Effective date: 20221031 |