블록체인(Block chain) - 블록 검증과정

Jeenie·2022년 8월 29일
0
post-custom-banner

1. 검증방법

현실에서는
" 타인의 서명을 완벽히 흉내낼 수 없다 / 도장을 잘 관리한다 "
는 전제하에 자필 서명 또는 도장을 찍는다.

하지만 모든 것을 복붙할 수 있는 인터넷에서는 어떻게 할까?

1-1. 비대칭 암호화 방식

= 공개키 알고리즘
비트코인을 포함한 암호화폐들이 이 방식을 사용한다.

클라이언트에서 거래를 하면 거래내역이 생성되고,
클라이언트는 이 거래내역을 노드에 전송해 검증을 맡긴다.

노드가 검증을 수행하기 위해서는, 그 거래내역 안에 전자서명 이 포함되어야 한다.

모든 클라이언트는 공개키비공개키가 있는데,
비공개키로 암호화한 데이터(거래내역 등)은 공개키로만 해독할 수 있다.

이미지 출처 - Mastering Bitcoin Ch04

비공개키를 타원곡선 곱셈함수로 돌리면 공개키가 나오고,
공개키를 해시함수로 돌리면 주소가 나온다.
이 그림에서 주목할 점은 일방향이라는 것이다.
비공개키로 공개키를 알 수 있지만, 공개키로 비공개키를 알 수 없다.

자세한 설명은 블록체인(Block Chain) 지갑(Wallet) - 2-1 공개 키 개인 키에서

1-3. 검증 과정

  1. 클라이언트 A는 자신의 거래내역이 있다.
  2. A는 자신의 거래 내역을 자신의 비공개키로 암호화한다.
  3. 그 후 A는 노드에게 [비공개키로 암호화한 거래내역] + [원본 거래내역] + [A의 공개키] 세트를 보낸다
  4. 노드는 그 세트를 받아서 검증을 수행한다
  5. 우선 [A의 공개키]로 [비공개키로 암호화한 거래내역]을 해독하고 그것을 [원본 거래내역]과 비교한다
  6. 비교 결과가 동일하면, 이 거래내역은 A가 생성한 올바른 거래임을 인정한다
  7. 이후 검증된 거래내역은 해당 노드 근처의 다른 노드들로 전파된다

거래내역을 바로 비공개키로 암호화하는 것이 아니라,

비공개키를 해시함수로 돌려서 해시값을 뽑아내고
그 해시값을 비공개키로 암호화하는 것이다.

이렇게 하면, 거래내역이 줄줄줄 아무리 길어도 고정된 길이의 해시값이 나오기 때문에 송수신이 유리하다.

1-4. 검증자가 조작하면?

A와 검증 노드가 합심해서 조작하면 어떻게 될까?

A가 가짜 거래내역을 노드에게 검증신청을 하고,
이 노드가 가짜 거래내역을 검증완료 처리하면?

이를 막기 위해서 신뢰할 수 있는 노드(검증자)만 검증할 수 있또록 제한한다.
신뢰할 수 있는 노드를 가리기 위해서
검증 참여를 위해선 비용이 발생하고, 검증이 완료되면 네트워크에서 보상을 지급한다.

입장료를 받기 때문에 나쁜 의도를 가진 검증 참여자를 걸러낼 수 있고,
보상으로 암호화폐를 받기 때문에 이 화폐의 가치가 올라가기 위해서는 정직한 검증을 해야한다.

profile
Web Front-end developer
post-custom-banner

0개의 댓글