검수요청.png검수요청.png

이더해시

위키원
lyo731 (토론 | 기여)님의 2019년 7월 11일 (목) 17:35 판
이동: 둘러보기, 검색

이더해시(Ethash)는 러시아, 캐나다의 프로그래머이며 이더리움의 개발자인 비탈릭 부테린(Vitalik Buterin)이 개발한 블록 체인 통화의 작업 증명(POW; Proof Of Work) 기능이다.

개요

이더해시는 비트코인의 합의 알고리즘에 특화된 주문형 반도체(ASIC; Application Specific Integrated Circuit) 장비로 인해 채굴자가 대형화된 연산력을 바탕으로 이뤄진 중앙화를 해결하기 위해 개발된 알고리즘이다. 대거(Dagger) 알고리즘과 하시모토(Hashimoto) 알고리즘을 결합해 만든 대거-하시모토(Dagger-Hashimoto) 알고리즘을 사용한다. 이 알고리즘은 메모리를 활용하는 알고리즘이며, 연산장치의 물리적 한계를 사용함으로써 ASIC의 효율성을 낮춘다.

특징

2차원 배열 데이터(DAG; Directed Acyclic Graph) 파일을 이용해 GPU 연산의 효율성은 높힌다. ASIC 무력화를 위해 메모리를 사용하며, 컴퓨터 메모리 일정량의 데이터를 읽은 후 noncehash 계산을 반복한다. [1] 목적 자체가 ASIC의 효율성을 낮춰 제작에 어려움을 주는 것이기 때문에 그를 위해 3만 블록마다 수 GB의 DAG을 새로 생성해 해싱에 사용한다. 블록의 헤더들을 스캔해 seed값을 추출할 수 있으며 당 seed를 통해 16mb의 pseudo random cache를 계산할 수 있고 당 cashe를 통해 1gb 이상의 Full Dataset을 생성할 수 있다. 30000 블록 단위 별로 Full Dataset이 완전히 변형되며 선형으로 증가한다. 또 해당 Full Dataset의 랜덤값을 마이닝 해싱 작업에 포함 시키도록 하여 메모리의 읽기 연산과 Dataset 저장 공간에 제약을 줘 ASIC 제작에 어려움을 주며 마이닝 과정에서 페이지를 불러올 때 mix 과정을 통해 다음에 불러올 페이지를 예측할 수 없게 설계되어 있다. 캐시 용량 자체가 8kb~32kb의 작은 크기로 DAG를 저장하기가 현실적으로 불가하며 캐시 미스의 확률이 높기 때문에 일부를 캐시에 저장하는 것 또한 불가능하다. cache data를 이용해 64bytes의 데이터를 생성하고 이를 계산 결과에 맞는 Data size크기만큼 생성하도록 반복해 DAG 파일을 생성한다.[2]

비트코인과의 비교

비트코인SHA256 연산만을 필요로 하지만 이더해시는 DAG를 사용해 예상 불가능한 순차적 메모리 연산을 필요로 해 ASIC의 제작이 어렵다. 비트코인과 같은 Pow 구조를 갖고 있으나 다른 매커니즘을 갖는다.

채굴 과정

비어있는 32개 길이의 배열을 Epoch수만큼 해싱한다. 그 값을 Seed값으로 삼아 FNV 해시를 이용해 DAG를 64회 참조하고 그걸 바탕으로 Digest를 생성한다. Digest와 Seed를 Keccak156해시를 해 결과값이 조건에 맞으면 채굴에 성공한다. Digest와 Nonce는 블록 헤더에 포함되는데 Digest 필드, Nonce 필드가 포함되지 않아 해시값에 변경이 없다. [3]


각주

  1. 니르바나,〈이더리움의 합의 알고리즘 - 작업증명〉, 《티스토리》, 2018
  2. dongsamb,〈Ethereun PoW 알고리즘 비교 및 원리〉, 《steemit》, 2018
  3. 야옹메롱,〈크립토알고리즘 개념 및 종류〉, 《네이버 블로그》, 2018-10-03

참고자료

야옹메롱,〈크립토알고리즘 개념 및 종류〉, 《네이버 블로그》, 2018-10-03 니르바나,〈이더리움의 합의 알고리즘 - 작업증명〉, 《티스토리》, 2018 dongsamb,〈Ethereun PoW 알고리즘 비교 및 원리〉, 《steemit》, 2018


  검수요청.png검수요청.png 이 이더해시 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.