ProgPOW에 대한 의문점 몇 가지. ProgPOW는 확실한 Anti-ASIC이 될 수 있을까요?
https://eips.ethereum.org/EIPS/eip-1057
ProgPOW에 대하여 오늘 이 페이지를 정독해봤습니다.
아래 내용은 영어 번역이 미흡하여 잘못된 부분이 있을 수 있습니다.
기존 POW에 대한 ProgPOW의 핵심적인 변경사항은 아래와 같습니다. (일부 변경사항 제외)
A. Increases mix state.
상태에 대한 혼합을 증가
B. Adds a random sequence of math in the main loop.
50블록 마다 무작위 수학 함수를 변경
C. Increases the DRAM read from 128 bytes to 256 bytes.
DRAM 읽기를 128바이트에서 256바이트로 변경
A, C의 경우 ASIC이 당장은 좀 더 어려울 뿐 새로운 ASIC이 나오는 데는 큰 문제가 없을 것 같고요.
B의 경우를 좀 더 살펴보면 아래와 같은 정수형의 11가지의 연산이 랜덤하게 추가되는데요.
1) a + b
2) a * b
3) (a * b)의 최상위 32비트
4) a, b중 작은값
5) 비트를 왼쪽으로 회전
6) 비트를 오른쪽으로 회전
7) a AND b
8) a OR b
9) a에 b승
10) a의 상위 0비트 개수 + b의 상위 0비트 개수
11) a에서 1로 설정된 비트의 개수 + b에서 1로 설정된 비트의 개수
보기에는 좀 어렵지만 컴퓨팅에서는 매우 쉬운 작업입니다.
이 또한 Anti-ASIC이라고 말하기는 무리가 있을것 같습니다.
해당 이슈의 맨 마지막에 보면 "이론적 해석"항목이 나오는데요.
ProgPOW는 GPU에서 그래픽 파이프 라인 (디스플레이, 지오메트리 엔진, 텍스처링 등), 부동 소수점 수학을 제외한 모든 부분을 사용한다고 명시하고 있으며
이것을 제외하면 ASIC은 1.2배의 효율성을 얻을 수 있다고 합니다. (위 2가지 기능은 그래픽 카드마다 호환성이 작기 때문에 사용할 수 없음)
그러나 GPU의 위 2가지 기능은 매우 중요하고 핵심적인 기능입니다.
이 기능을 제외하고 나머지 모든 부분을 사용한다는 것은 차 띠고 포 띠고 장기 둔다는 의미와 동일합니다.
(게임 개발자로써 GPU의 기능에 대해서는 누구보다 잘 알고 있음)
그리고 현 시점에 ASIC이 1.2배의 효율성을 가진다면 아마 곧 새로운 ASIC이 등장할 수도 있겠죠.
아무 쓸모없이 해시 경쟁만 하는 ASIC보다는 (ASIC 채굴자님들께는 죄송 ㅠㅠ)
그래도 재활용 가능한 GPU 채굴이 훨씬 생산적이라고 보는 입장에서
Anti-ASIC으로 가는 길은 정말 험난하네요.