티스토리 뷰

이더리움의 블록 생성 알고리즘인 Ethash에 대해 알아보겠습니다.


이더리움의 개발자 비탈릭 부테린은 이더리움의 전용 채굴기(ASIC)가 개발되는 것을 막기 위해 Ethash 알고리즘을 개발하였습니다.

Ethash는 Dagger, Hashimoto 라는 두 알고리즘을 수정, 결합하여 만들어진 알고리즘입니다.

Dagger, Hashimoto 두 알고리즘은 메모리를 활용하는 알고리즘으로 연산장치의 물리적인 한계를 이용해 ASIC의 효율성을 떨어뜨렸습니다.



비트코인의 채굴 과정




비트코인의 경우 위 그림처럼 암호화할 데이터만 주어지면 원하는 결과가 나올 때까지 무한히 반복합니다.

연산을 위한 불필요한 장치들을 제거한다면 채굴하기 위한 가장 적합한 장비(ASIC)를 만들어낼 수 있습니다.

ASIC은 일반적인 컴퓨터 장비가 아니기 때문에 일반 사용자의 CPU, GPU로는 경쟁하기 어렵습니다.


때문에 신규 채굴자의 유입이 줄어들어 소수의 채굴자들만 남게되면, 블록체인 안의 내용이 소수의 채굴자 뜻대로 조작될 수 있습니다.

블록체인은 언제든지 여러 갈래로 나뉘어 질 수 있습니다. 이 경우 비트코인에서는 여러 갈래 중 가장 긴 블록만을 인정합니다.

왜냐하면 블록을 생성하는데 가장 많은 노력이 들어갔기 때문입니다. 이것이 작업 증명(POW)의 원리입니다.

블록체인 내용을 바꾸고 싶은 사람은 블록을 수정하고 해당 블록 이후의 블록을 생성해 기존의 블록체인을 앞질러야 합니다.

누군가가 전체 채굴자의 채굴 능력의 51%만 독점할 수 있다면, 아무도 그사람보다 빠르게 블록체인을 생성할 수 없습니다.


ASIC은 이것을 가능하게 합니다. 




이더리움의 채굴 과정




이더리움은 채굴하기 위해 대용량의 메모리가 필요합니다.

약 2GB의 메모리는 요즘 사용하는 PC의 메모리에 비하면 절대 대용량이 아닙니다.

하지만 연산장치 안에 들어있는 캐시 메모리에 비하면 엄청난 용량입니다.

현재 CPU의 캐시 메모리는 많아야 수 MB입니다. GPU의 경우는 이것보다 작습니다.

출시되는 그래픽 카드의 RAM이 수 GB이기 때문에 헷갈릴 수 있지만 칩 안에 있는 Cache 메모리와 그래픽 카드 메모리와는 다른 것 입니다.


2GB에 달하는 비정형 데이터는 30,000 블록마다 새로 생성되고 크기도 매번 증가하기 때문에 모든 데이터를 탑재할 수도 없습니다.

이렇게 수 GB의 비정형 데이터를 메모리에 올려놓고 채굴 연산에 반영하기 때문에 ASIC을 제작하기 어려워졌습니다.


채굴 과정을 살펴보겠습니다.

최종 목표값과 비교하기 위한 해시를 얻으려면 Digest와 Seed가 필요합니다.

Seed는 Digest를 얻기 위해서도 필요하기 때문에 Seed를 먼저 구합니다.

Seed 값을 기초로 FNV 해시를 이용해 메모리에 탑재된 비정형 데이터(DAG)를 64회 참조하고, 얻어진 DAG 데이터로 Digest를 생성합니다.

이렇게 얻어진 Digest와 Seed를 Keccak256 해시를 해서 얻어진 값이 조건에 맞으면 채굴에 성공하게 됩니다.

Digest와 Nonce는 생성될 블록 헤더에 포함됩니다. Seed를 얻을 때 생성될 블록 헤더가 해시 되지만 이때 Digest 필드와 Nonce 필드는 포함되지 않기 때문에 해시값이 바뀌지 않습니다.



DAG...?


메모리에 탑재되는 비정형 데이터는 모든 채굴자 또는 블록을 검증하는 노드가 같은 데이터를 가지고 있어야 합니다.

이더리움 위키에서는 임의로 생성된 데이터를 사용한다고 적혀있습니다.

어떻게 임의로 생성된 데이터로 합의를 이룰 수 있는지 알아보겠습니다.




먼저 비어있는 32개 길이의 배열을 Epoch 수 만큼 해싱합니다.

이것을 Seed 삼아 Cache 데이터을 생성하고 DAG 데이터를 만들때 사용합니다.

이렇게 하드코딩이나 네트워크를 통한 데이터 공유 없이 모든 채굴자가 대용량의 같은 데이터를 가질 수 있습니다.


DAG 데이터는 한 행씩 만들어지기 때문에 필요한 행만 만들어낼 수 있습니다.

따라서 DAG 파일을 탑재하지 못하는 컴퓨터에서는 필요한 DAG 데이터를 매번 생성하는 과정을 거쳐야하기 때문에 채굴 효율이 더 떨어지게 됩니다.




하지만...


이런 부테린의 노력이 무색하게도 결국 우지한의 Bitmain에서 이더리움 전용 채굴기를 내놓았습니다.

어떤 설계로 Ethash 알고리즘을 최적화 했는지 너무 궁금하지만 절대 공개하지 않겠죠?

이미 3월부터 전용 채굴기에 대항해 하드포크를 진행해야 한다는 의견이 나왔습니다.

이더리움의 POS 알고리즘인 Casper는 아직 완성되지 않았으니, 한동안 일반 사용자의 이더리움을 채굴하기가 쉽지 않아보입니다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함