[컴] 비트코인의 hash 알고리즘

비트코인 해쉬 알고리즘  / 해시 알고리즘 / bitcoin hash funciton

Bitcoin

비트코인관련 흥미로운 글이 있어서 정리 해 놓는다.

  • Bitcoin 에서 사용하는 hash function 은 SHA-256 이다.
  • Bitcoin 은 security 를 위해 SHA-256 을 두번 사용한다.(double-SHA-256)
  • 어떤 hash 값을 찾느냐 하면, 연속된 0 으로 된 hash 값을 찾아야 한다.
  • hash function 은 원래 예측안되는 random 값을 결과로 주며, 역으로 추측할 수 없는 특성때문에 특정 hash 값을 찾으려면 원하는 hash 값이 나올때까지 input 을 계속 변경하는 수밖에 없다.
  • 현재(2017년 12월)는 연속된 0이 약 17개 정도 있는 hash 값을 발견해야 한다. 이것의 확률은 1/140,000,000,000,000,000,000 정도라고 한다.


  • 비트코인 블럭 샘플
  •  hash function 의 input 으로 주면 연속된 0 을 가진 hash값(block hash) 가 나오게 된다.
  • hash input 은 아래 값들을 모아서 만들어진다.
    • version
    • previous block hash(reversed)
    • Merkle root(reversed)
    • timestamp
    • bits
    • nonce
  • 비트코인 블럭 샘플의 값을 가지고 테스트 해보면 이미 채굴된 값이라서 당연히 연속된 0이 나오지만, 대부분의 경우는 그렇지 않다. 그 경우에는 nonce 나 다른 부분의 값을 변경하면서 연속된 0 이 나오는 input 을 찾아야 한다.


SHA-256 해쉬 알고리즘

  • SHA256 hash algorithm 은 512bits 를 input 으로 받는다.
  • 그래서 결과로 256-bit 을 내어준다.
  • SHA 256 은 간단한 작업을 64번 반복해서 output 을 만든다.
  • 이 간단한 작업을 그림으로 표현하면 아래와 같다.

1 round

잘보면 대충 알 수 있는데, 일단 A,B,C,D,E,F,G,H 는 각 하나당 4byte(32bit) 로서 총 64 byte를 보여준다. 한 round 를 수행하면, ABCDEFG 가 오른쪽으로 움직이고, H 만 여러가지 계산을 거쳐서 A의 자리로 가게 된다. 자세한 설명은 아래 링크들을 참고하자.


scrypt hash algorithm

  • 하드웨어로 구현이 어렵도록 디자인된 hash algorithm
  • Litecoin / Dogecoin 등의 가상화폐가 사용한다.






댓글 없음:

댓글 쓰기