///
Search
🏒

04.Fork

이전자료

Fork : 블록체인 연결이 2개 이상의 분기로 갈라지는 현상을 의미한다.
Fork가 발생하는 이유
블록체인 P2P 네트워크 내에서 모든 참가자들이 독립적으로 참여할 수 있기 때문이다.
비트코인과 이더리움의 작업증명(PoW)방식
블록체인에 블록을 추가하기 위해 문제를 품 (Hash 값 찾기) → 그 결과 여러 노드들이 서로 문제를 풀려고 경쟁을 한다.
그런데 어쩌다가 두개의 노드가 비슷한 시기에 문제를 풀게 되었다.
그러면 블록체인에 추가될 후보자로 두개의 블록이 올라가게 된다.
이때 바로 분기가 발생한다.
Longest Chain Rule
예시 2개의 노드에서 채굴한다고 가정
A노드와 B노드가 있다
내가 친구에게 송금을 할려고 할때에
트랜잭션이 생기고 트랜잭션 풀이라는 곳에 들어간다.
이제 A,B 에서 블록을 만들기 위해 트랜잭션 풀에 있는 트랜잭션들을 블록에 담는다.
참고로 여기에는 내가 송금했다는 기록이 있을것 이다.
이 과정이 끝나면 노드들이 각자가 만든 블록을 블록체인에 추가하기 위해서 문제를 풀어야 한다.
해쉬값을 찾는 연산을 거쳐야 하는데 어떻게 하다보니 A,B 둘다 풀게 되면
다른 노드들에게 A,B가 내가 풀었다고 다른 노드에게 연락을 한다.
그러면 어떤 노드들은 A노드가 풀었다는 소식 또 다른 노드들은 B가 풀었다는 소식을 듣게 되는데 이렇게 분기가 발생된다.
이러한 분기는 Genesis block에서 차근차근 오른쪽으로 갈때에 처음으로 발생하는 분기점을 나타낸다.
검정노드 같은 경우는 말 그대로 블록체인 장부에 기록되는 블록체인이다.
Dead forks에서 표시되는 저기 블록은 실제로 연산을 수행하였으나, 사용 못하고 버려지게 된다.
Longest Chain Rule의 치명적인 단점
Longest Chain Rule의 핵심은 가장 긴 블록을 신뢰하여 선택한 후 그걸 선택해서 장부를 계속 업데이트를 한다는 점 이다.
그러면 남들은 블록을 한 두개씩 만들때에 내 컴퓨터에서 여러개의 블록을 다 만들어버리면?
즉 내 컴퓨터에서 블록을 수십개 만들어버리면 다른 컴퓨터에서는 내 컴퓨터의 블록이 많은걸 확인하고 그걸 신뢰하고 복사해서 장부에 저장하게 된다.
그렇게 되면 코인복사와 코인판매 기록을 조작할 수 있게 되고 이렇게 해킹을 할 수 있다.
누구 블록체인 라인이 Long 한지 까지 판단하면서 장부를 업데이트를 해야하기 때문에 Finality 까지 시간이 오래 걸린다.