비트코인 정말로 위조가 불가능해?

이진중·2022년 6월 20일
0

본 포스팅은 블록체인 이론과 응용-홍원기 교수의 강의를 보고 만든 포스팅입니다.

블록체인 그래서 그게 대체뭔데.. 2편에서 소개한 암호화폐의 기술적 심화를 다룹니다.

비트코인의 블록생성과정

  1. 이전블록의 블록헤더해시를 prev에 대입한다.
  2. 자신의 메모리 풀에서 새로 생성된 블록의 TX를 제거
  3. coinbase TX를 추가
  4. 우선순위가 높은TX를 먼저 blockbody에 추가
  5. MerkleRootHash를 구한다.
  6. 마이닝 시작

CoinBase TX

블록의 첫번째 거래, 블록채굴에 대한 보상을 블록을 생성한 사람에게 주는 TX를 말한다.

거래수

순서를 보면 짐작할수 있듯이 블록에는 주어진 용량의 TX이 채워지면 마이닝이란 과정으로 넘어간다. 비트코인의 경우 1MB의 저장공간을 가지고, 일반적인 거래 한건의 용량이 250byte, 따라서 한 블록에 4,000개 정도의 거래가 저장된다.


마이닝

간단하게 말하면, 특정 해시값보다 작은 해시값을 나타내는 값을 찾는것이다. 그리고 그것이 블록을 만들때 사용되는 Nonce 값이다.
블록헤더에는 DifficultyTarget라는 난이도값이 존재한다.

Difficulty = MAX_TARGET / current_target(목표값)

difficulty는 비트코인 내부 알고리즘에 따라 계산되어 나오고
MAX_TARGET은 비트코인 블록체인이 처음 구동될때 설정된 고정값이다.

목표값보다 작은 해시값을 찾으면 그것의 인풋값이 Nonce값이 되고, 블록을 생성할수 있다.

비트코인의 블록생성이 간단한 수학문제와 같다는말은
간단히 해쉬값을 대입해보고 비교하며 Nonce값을 찾는 과정을 말하는것이다.


Fork(분기)

블록을 생성하다보면 같거나 비슷한 시간에 2개 이상의 블록이 생성될수 있다.
비트코인은 분기가 생겼을때 가장 긴 체인을 선택하는 알고리즘을 채택했다.

가장긴체인을 선택하는 이유

정확하게 말하면 누적난이도가 가장 높은 체인을 선택한다. 대개 가장긴체인이 누적난이도가 젤 높다.

--> 악의적인 노드에 의해 체인이 바뀌려면 악의적인 노드가 만든 블록이 들어간 체인을 구성원 51%이상이 메인체인으로 인정을 해야한다

--> 악의적인 노드는 다른 노드들이 만든 블록을 무시하고 체인을 이어서 가장 긴체인을 만들 수 있는가?

이것이 불가능에 가깝고, 비트코인이 위조되지 않는다고 주장하는 이유이다.

다른 노드들이 만든 블록을 무시하고 악의적인 노드들이 만든 체인을 더 길게 만드려면 다른노드의 해시파워 < 악의적인 노드의 해시파워 가 되야한다.

즉 51%이상이 악의적인 노드여야 가장 긴체인을 만들수 있다는것이다.


참고

https://m.upbitcare.com/academy/education/blockchain/64
https://medium.com/@dongha.sohn/bitcoin-6-난이도와-목푯값-9e5c0c12a580
https://brunch.co.kr/@dongha-sohn/11
https://daeun1012.github.io/2018-04-03/ethereum-white-paper

0개의 댓글