HashCash 연산 테스팅(Hashcash Testing)


비트코인에서 작업증명에 쓰이는 hashcash 기법을 python으로 만들어보았다.





다음과 같은 소스가 짜여지며 msg는 minergate로 XMR을 채굴해보며 얻은 log로 임의의 테스트 값이라고 생각하면 된다.

(실제로는 BlockHeader와 Body가 들어감)


nonce값을 1씩 증가하며 연산하며

difficulty는 2로 해시 값이 '00'으로 시작하는 해시를 만든다.




difficulty를 2로 하였을 경우 연산은 1초도 채 걸리지 않으며 nonce값은 258이 나오는 것을 확인할 수 있다.




difficulty를 5로 하였을 경우 연산은 1초정도(시간 계산 하는 소스를 추가해보아야겠다) 걸리며 nonce 값은 321004가 출력된다.




difficulty를 6으로 하였을 경우 연산은 10~20초, nonce값은 24075022이다.





difficulty를 7로 하였을 경우 연산은 상당히 오래 걸리며(글을 완성하는 단계에서 출력됨), nonce값은 286588031이다.


 Difficulty

Nonce 

Time(s)

2

258

0.x 

5

321004

6

24075022

1x 

7

286588031

60*x 



논문과 백서에서 알 수 있듯이 요구되는 해시의 연속 0의 갯수, 즉 난이도가 증가할 수록 지수적으로 해결 시간이 증가되며 연산량 또한 폭발적으로 증가하는 것을 볼 수 있다.

또한 위 소스는 CPU 1코어(i7-6700HQ)만 이용하여 계산한 것이므로 구동 환경과 하드웨어 성능에 따라 천차만별이다.

'IT - Security > 블록체인-Blockchain' 카테고리의 다른 글

180109_코인의 종류와 기술  (0) 2018.01.09