티스토리 뷰

앞에서 블록 체인은 거대한 분산 공개 장부라고 했다. 이 분산 공개 장부는 여러 개의 노드에 복사되어 있으며, 여러 개의 노드는 p2p로 연결되어 블록 체인 네트워크를 형성한다. 그리고 하나의 거래 정보가 발생하면 이 거래 정보는 블록 체인 네트워크에 분산되어 있는 수많은 노드에 전파되어야 한다.

다음 그림과 같이 사용자 F가 지갑 앱에서 C에게 수수료 0.001BTC와 함께 1.6BTC를 보내면, 지갑 앱은 블록 체인 네트워크 상의 노드 A에 거래 정보를 전송한다.

거래 정보를 받은 노드 A는 먼저 해당 거래의 유효성을 검증한 후에 그 거래를 아직 블록 생성 작업이 시작되지 않은 후보 블록에 추가하고, 인접한 다른 노드에 그 거래 정보를 전파한다.

거래 정보를 전파받은 노드 B도 마찬가지 방식으로 블록 체인 네트워크 상의 다른 노드에게 거래 정보를 전파하며, 이 거래는 결국 블록 체인 네트워크 전체 노드에 전파된다.

F가 C에게 비트코인을 전달한다는 트랜잭션을 발생시키면 p2p네트워크내에 존재하는 다른 모든 노드들에게 이 트랜잭션 정보가 전달 된다.

이 트랜잭션을 수신한 다른 노드들은 우선 이 트랜잭션이 올바른 트랜잭션인지(F가 현재 잔액이 0BTC인데 1.5BTC를 송금하고 있지는 않은가)에 대해서 유효성 검증을 하고 나서 통과할 경우 후보 블록의 거래정보란에 이 트랜잭션을 추가 하게 된다. 만약에 노드 A가 채굴에 성공하게 될 경우 이 후보블록은 진짜 블록이 되고나서 네트워크에 블록해쉬값과 함께 전파될것이다.

그렇게 되면 이 블록과 블록해쉬값을 수신한 다른 노드들은 이 블록 해쉬값이 실제 난이도 보다 작은지 확인함으로써 이 블록이 진짜 방금 생성된 올바른 블록인지에 대한 여부를 확인한다.

올바른 블록이라고 판단될 경우 자신의 블록체인에 방금 새롭게 수신된 블록을 추가하게 되는것이다.

우선은, 블록을 채굴하기 위해서는 전체 네트워크에 있는 수많은 채굴자들이 열심히 채굴한다고 가정했을때 10분에 한두개 정도만 채굴할수 있게끔 난이도가 자동으로 조정된다. 그렇기 때문에 네트워크 내에 있는 두 노드가 동시에 블록을 채굴할 가능성은 매우 적다.

그렇기 때문에, 만약에 동시에 블록을 생성해서 네트워크 내의 어떤 노드에게서 블록체인의 분기가 일어났다고 해도, 그 다음에는 한번더 동시에 두개의 블록이 생성될 확률이 적으므로, 결국에는 어떤 한 가지는 계속 길어질것이고 다른 한 가지는 길어지지 못하고 그대로 현재 길이를 유지하게 될것이다. 최종적으로 길이가 더 긴 가지에 더 많은 연산이 들어갔다고 판단하여 짧은 가지는 버려버리게 된다. 평균적으로 분기가 일어나고 2~3블록이 추가된 경우 이 블록체인의 분기가 해결된다고 한다.

이 버려지는 가지에 포함된 블록을 고아블록이라고 한다. 

하지만 일시적으로나마 이런 분기 상태가 발생할 수 있기 때문에, 실제 거래 상황에서는 보통 어떤 거래가 포함된 블록 이후로 3-5개의 블록이 더 추가된 후에야 그 거래를 최종적으로 유효한 것으로 확정한다. 일시적으로 분기가 발생하더라도 그 이후로 3-5개의 블록이 추가되는 과정에서 분기 상태가 해소되고 결국 하나의 블록 체인만 남기 때문이다.

고아가 된 빨간블록에 있던 거래 중 유실되는 거래가 생기지 않을까?

두 개의 가지중에 한 가지만 선택되므로 빨간블록에 포함되는 트랜잭션은 유실되는게 아닌가 하고 생각할수도 있을것이다. 하지만 그렇지 않다. 왜냐하면, 어차피 빨간 블록에 있는 트랜잭션의 내용은 초록색 또는 핑크색 블록에 어디엔가는 포함이 되어 있을것이다. 왜냐면 빨간 블록과 초록블록은 같은 기간 (3시30분~3시40분)동안 모아진 트랜잭션에 대해 블록을 생성한것이다. 그렇기 때문에 빨간 블록을 버리더라도 그 안의 트랜잭션들은 초록블록에 똑같이 존재할 확률이 크다. 물론 트랜잭션이 네트워크에 전파되는 시간이 있기 때문에 빨간 블록과 초록블록의 트랜잭션 내용이 완전히 같다고는 할 수 없지만 초록 블록에 포함되지 못한 트랜잭션은 그 다음 블록인 핑크 블록에는 존재할것이다.

그렇기 때문에, 이런 문제는 걱정하지 않아도 된다.



'컴퓨터 공학과 졸업 > 블록체인' 카테고리의 다른 글

블록체인 처리 흐름  (0) 2018.02.04
블록체인 FAQ  (2) 2018.01.15
블록체인의 거래 정보 변경 불가  (0) 2018.01.15
블록체인의 이중지불 문제  (0) 2018.01.15
마이닝  (0) 2018.01.14
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함