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

Más contenido relacionado

La actualidad más candente

Java8から17へ
Java8から17へJava8から17へ
Java8から17へonozaty
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveESUG
 
Ekon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyEkon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyArnaud Bouchez
 
AES-GCM common pitfalls and how to work around them.pptx
AES-GCM common pitfalls and how to work around them.pptxAES-GCM common pitfalls and how to work around them.pptx
AES-GCM common pitfalls and how to work around them.pptxskantos
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうShinya Nakajima
 
UnicodeによるXSSと SQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSと SQLインジェクションの可能性Hiroshi Tokumaru
 
Parser combinatorってなんなのさ
Parser combinatorってなんなのさParser combinatorってなんなのさ
Parser combinatorってなんなのさcct-inc
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてtecopark
 
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発するShohei Okada
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料Asuka Nakajima
 
Improving Pharo Snapshots
Improving Pharo SnapshotsImproving Pharo Snapshots
Improving Pharo SnapshotsESUG
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門zaru sakuraba
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용Ian Choi
 

La actualidad más candente (20)

Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future Perspective
 
Ekon25 mORMot 2 Cryptography
Ekon25 mORMot 2 CryptographyEkon25 mORMot 2 Cryptography
Ekon25 mORMot 2 Cryptography
 
AES-GCM common pitfalls and how to work around them.pptx
AES-GCM common pitfalls and how to work around them.pptxAES-GCM common pitfalls and how to work around them.pptx
AES-GCM common pitfalls and how to work around them.pptx
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
 
UnicodeによるXSSと SQLインジェクションの可能性
UnicodeによるXSSとSQLインジェクションの可能性UnicodeによるXSSとSQLインジェクションの可能性
UnicodeによるXSSと SQLインジェクションの可能性
 
Parser combinatorってなんなのさ
Parser combinatorってなんなのさParser combinatorってなんなのさ
Parser combinatorってなんなのさ
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化について
 
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Git入門
Git入門Git入門
Git入門
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
 
Improving Pharo Snapshots
Improving Pharo SnapshotsImproving Pharo Snapshots
Improving Pharo Snapshots
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門
 
Reactを使ったYahoo!地図の技術刷新への挑戦 #yjbonfire
Reactを使ったYahoo!地図の技術刷新への挑戦 #yjbonfireReactを使ったYahoo!地図の技術刷新への挑戦 #yjbonfire
Reactを使ったYahoo!地図の技術刷新への挑戦 #yjbonfire
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
Play with UEFI
Play with UEFIPlay with UEFI
Play with UEFI
 

Similar a Ethash : Ethereum PoW Algorithm

테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)BoanLabDKU
 
세션2. 이더리움 합의 알고리즘과 마이닝
세션2. 이더리움 합의 알고리즘과 마이닝세션2. 이더리움 합의 알고리즘과 마이닝
세션2. 이더리움 합의 알고리즘과 마이닝Jay JH Park
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
Theano 와 Caffe 실습
Theano 와 Caffe 실습 Theano 와 Caffe 실습
Theano 와 Caffe 실습 정주 김
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Daum DNA
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼ibmrep
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기YEONG-CHEON YOU
 
Mapreduce tuning
Mapreduce tuningMapreduce tuning
Mapreduce tuningGruter
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overviewCDIT-HCI
 
Talk IT_ Oracle_최재규_110823
Talk IT_ Oracle_최재규_110823Talk IT_ Oracle_최재규_110823
Talk IT_ Oracle_최재규_110823Cana Ko
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimizationSANG WON PARK
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례(Joe), Sanghun Kim
 

Similar a Ethash : Ethereum PoW Algorithm (20)

테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
 
세션2. 이더리움 합의 알고리즘과 마이닝
세션2. 이더리움 합의 알고리즘과 마이닝세션2. 이더리움 합의 알고리즘과 마이닝
세션2. 이더리움 합의 알고리즘과 마이닝
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Theano 와 Caffe 실습
Theano 와 Caffe 실습 Theano 와 Caffe 실습
Theano 와 Caffe 실습
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
Nvidia architecture
Nvidia architectureNvidia architecture
Nvidia architecture
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 
Mapreduce tuning
Mapreduce tuningMapreduce tuning
Mapreduce tuning
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overview
 
Talk IT_ Oracle_최재규_110823
Talk IT_ Oracle_최재규_110823Talk IT_ Oracle_최재규_110823
Talk IT_ Oracle_최재규_110823
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
 

Más de Dongsam Byun

오피니언마이닝에 기반한 주식 자동 매매 시스템
오피니언마이닝에 기반한 주식 자동 매매 시스템오피니언마이닝에 기반한 주식 자동 매매 시스템
오피니언마이닝에 기반한 주식 자동 매매 시스템Dongsam Byun
 
화이트박스 테스팅
화이트박스 테스팅화이트박스 테스팅
화이트박스 테스팅Dongsam Byun
 
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어Dongsam Byun
 
QR코드 스캔에 기초한 보안 결제 시스템
QR코드 스캔에 기초한 보안 결제 시스템QR코드 스캔에 기초한 보안 결제 시스템
QR코드 스캔에 기초한 보안 결제 시스템Dongsam Byun
 
판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템Dongsam Byun
 

Más de Dongsam Byun (6)

오피니언마이닝에 기반한 주식 자동 매매 시스템
오피니언마이닝에 기반한 주식 자동 매매 시스템오피니언마이닝에 기반한 주식 자동 매매 시스템
오피니언마이닝에 기반한 주식 자동 매매 시스템
 
화이트박스 테스팅
화이트박스 테스팅화이트박스 테스팅
화이트박스 테스팅
 
Ethereum A to Z
Ethereum A to ZEthereum A to Z
Ethereum A to Z
 
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어
음성인식 및 웹 기반 어플리케이션을 통한 유비쿼터스 스마트홈 제어
 
QR코드 스캔에 기초한 보안 결제 시스템
QR코드 스캔에 기초한 보안 결제 시스템QR코드 스캔에 기초한 보안 결제 시스템
QR코드 스캔에 기초한 보안 결제 시스템
 
판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템판매정보 빅데이터 분석을 통한 판매 예측 시스템
판매정보 빅데이터 분석을 통한 판매 예측 시스템
 

Ethash : Ethereum PoW Algorithm

  • 1. Ethash 이더리움의 Proof of Work 알고리즘 Bitcoin 의 마이닝 알고리즘과 무엇이 다르고 왜 만들었나? ASIC(주문형 반도체) 로 인한 Hashrate 독점, 중앙화 문제 해결에 초점
  • 3. Bitcoin Mining Flow Bitcoin 의 경우 단순히 SHA256 연산만을 필요로 하므로 일반 CPU, GPU 보다 수천배 이상 빠른 ASIC 제작이 가능
  • 4. Ethash Mining Flow 단순히 SHA256 연산만을 필요했던 Bitcoin 의 Mining 알고리즘과 달리 Ethash 에서는 DAG 를 통해 미리 알 수, 할 수 없는 순차적 메모리 연산을 요구하여, ASIC 제작을 어렵게 함
  • 5. Ethash • Memory Hard Computation • Memory Easy Validation • ASIC ( 주문형 반도체 ) 제작을 힘들게 • 위 같은 목적 달성을 위해 매 3만 블록마다 수 GB 의 DAG(Directed acyclic graph)를 새로 생성하여 해싱에 사용( 점점 사이즈 증가 ) • KECCAK(SHA-3) 사용 • Dagger 와 Hashimoto 알고리즘의 장점을 결합한 Dagger-Hashimoto 의 수정버전
  • 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. Ethash: DAG Cache Generation 선형 증가하는 소수를 사이즈로 사용 2048 epoch 만큼의 lookup table 이 미리 계산되어 하드코딩 되어 있다. 2017.11 기준 약 450만 블록으로서, 약 150 epoch 이며 DAG 의 사이즈는 2.2GB 정도
  • 8. Ethash: DAG Cache Generation Sergio Demian Lerner 의 RandMemoHash Strict Memory Hard Hashing Functions (2014) 알고리즘을 사용하여 연산 시 메모리가 특정 임계치 보다 낮으면 연산 속도가 기하급수적으로 길어지도록 설계, 이를 통해 특정 시간동안 특정양의 메모리가 해당 연산을 위해서만 사용 되었음을 증명 할 수 있게된다. # 3 # 64 # keccak512
  • 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. 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. Ethash: Hashimoto, Mining # zero padding Hashimoto_light 는 light client 가 1기가 이상의 DAG 를 가지고 연산하기 무거우니 16MB 이상의 cache 만으로 실시간으로 DAG를 연산, 생성하여 사용하도록 한 것
  • 13. Ethash 정리 • 민주적, 비독점적인 탈중앙 마이닝을 위해 ASIC 제작을 어렵도록 설계 • ASIC 의 경우 오로지 마이닝 용도이므로 (전기료 == 채굴수입) 이 되어 에너지가 낭비됨 • Ethash 계속 확장, 변경되는 DAG 파일을 통한 메모리 연산을 요구함 • 따라서 별도 장비구입 없이 이미 모두가 소유하고있는 일반적인 PC 로 채굴하기 적합 • 하지만 합의 과정을 위해 불필요한 연산을 통한 에너지 소비는 여전하므로 장기적으로 PoS 가 불가피
  • 15. DAG : Directed Acyclic Graph
  • 16.
  • 18. DAG Cache Generation Sergio Demian Lerner 의 RandMemoHash Strict Memory Hard Hashing Functions (2014) 알고리즘을 사용하여 연산 시 메모리가 특정 임계치 보다 낮으면 연산 속도가 기하급수적으로 길어지도록 설계, 이를 통해 특정 시간동안 특정양의 메모리가 해당 연산을 위해서만 사용 되었음을 증명 할 수 있게된다.