Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ethash : Ethereum PoW Algorithm

226 views

Published on

Ethash : Ethereum PoW Algorithm
http://dongsamb.com/ethash
https://steemit.com/kr/@dongsamb/ethereum-pow-ethash

Published in: Internet
  • Login to see the comments

Ethash : Ethereum PoW Algorithm

  1. 1. Ethash 이더리움의 Proof of Work 알고리즘 Bitcoin 의 마이닝 알고리즘과 무엇이 다르고 왜 만들었나? ASIC(주문형 반도체) 로 인한 Hashrate 독점, 중앙화 문제 해결에 초점
  2. 2. GPU vs ASIC https://compubench.com https://en.bitcoin.it/wiki/Mining_hardware_comparison
  3. 3. Bitcoin Mining Flow Bitcoin 의 경우 단순히 SHA256 연산만을 필요로 하므로 일반 CPU, GPU 보다 수천배 이상 빠른 ASIC 제작이 가능
  4. 4. Ethash Mining Flow 단순히 SHA256 연산만을 필요했던 Bitcoin 의 Mining 알고리즘과 달리 Ethash 에서는 DAG 를 통해 미리 알 수, 할 수 없는 순차적 메모리 연산을 요구하여, ASIC 제작을 어렵게 함
  5. 5. Ethash • Memory Hard Computation • Memory Easy Validation • ASIC ( 주문형 반도체 ) 제작을 힘들게 • 위 같은 목적 달성을 위해 매 3만 블록마다 수 GB 의 DAG(Directed acyclic graph)를 새로 생성하여 해싱에 사용( 점점 사이즈 증가 ) • KECCAK(SHA-3) 사용 • Dagger 와 Hashimoto 알고리즘의 장점을 결합한 Dagger-Hashimoto 의 수정버전
  6. 6. Ethash: DAG data, cache size • 블록의 헤더들을 스캔하여 Seed 값 추출 가능 • 해당 Seed 를 통해 16MB 의 pseudo random cache 를 계산 가능 • 해당 Cache를 통해 1GB 이상의 Full Dataset 을 생성 가능 • 30,000 Block 단위 별로 Full Dataset 이 완전히 바뀌고, 선형으로 커지도록 설계 됨 • 해당 Full Dataset 의 랜덤한 부분을 마이닝 해싱 작업에 포함 시키도록 함 • 따라서 메모리 읽기 연산, Dataset 저장 공간 등의 제약을 주어 ASIC 제작이 불가능하도록 함
  7. 7. Ethash: DAG Cache Generation 선형 증가하는 소수를 사이즈로 사용 2048 epoch 만큼의 lookup table 이 미리 계산되어 하드코딩 되어 있다. 2017.11 기준 약 450만 블록으로서, 약 150 epoch 이며 DAG 의 사이즈는 2.2GB 정도
  8. 8. Ethash: DAG Cache Generation Sergio Demian Lerner 의 RandMemoHash Strict Memory Hard Hashing Functions (2014) 알고리즘을 사용하여 연산 시 메모리가 특정 임계치 보다 낮으면 연산 속도가 기하급수적으로 길어지도록 설계, 이를 통해 특정 시간동안 특정양의 메모리가 해당 연산을 위해서만 사용 되었음을 증명 할 수 있게된다. # 3 # 64 # keccak512
  9. 9. # 30000
  10. 10. Ethash: DAG Full Dataset calculation # 16 == 64 // 4 # mix[0] = mix[0] xor i # 256 # keccak512 # xor 의 대체제로 fnv hash 사용 (분산효과) fnv(a, b): (a * prime) xor b
  11. 11. Hashimoto # 64 # 64 # 32 == 128 // 4 # 2 == 128 / 64 # to little-endian # [0, 4, 8, … ] # for Fetch DAG Page # Fetch DAG Page from dataset_lookup table
  12. 12. Ethash: Hashimoto, Mining # zero padding Hashimoto_light 는 light client 가 1기가 이상의 DAG 를 가지고 연산하기 무거우니 16MB 이상의 cache 만으로 실시간으로 DAG를 연산, 생성하여 사용하도록 한 것
  13. 13. Ethash 정리 • 민주적, 비독점적인 탈중앙 마이닝을 위해 ASIC 제작을 어렵도록 설계 • ASIC 의 경우 오로지 마이닝 용도이므로 (전기료 == 채굴수입) 이 되어 에너지가 낭비됨 • Ethash 계속 확장, 변경되는 DAG 파일을 통한 메모리 연산을 요구함 • 따라서 별도 장비구입 없이 이미 모두가 소유하고있는 일반적인 PC 로 채굴하기 적합 • 하지만 합의 과정을 위해 불필요한 연산을 통한 에너지 소비는 여전하므로 장기적으로 PoS 가 불가피
  14. 14. Appendix
  15. 15. DAG : Directed Acyclic Graph
  16. 16. https://gist.github.com/dongsam/53dfce6262e62957891c7315117d89c2
  17. 17. DAG Cache Generation Sergio Demian Lerner 의 RandMemoHash Strict Memory Hard Hashing Functions (2014) 알고리즘을 사용하여 연산 시 메모리가 특정 임계치 보다 낮으면 연산 속도가 기하급수적으로 길어지도록 설계, 이를 통해 특정 시간동안 특정양의 메모리가 해당 연산을 위해서만 사용 되었음을 증명 할 수 있게된다.
  18. 18. SHA-3 ( KECCAK )
  19. 19. FNV hash

×