Blockchain Research

블록체인의 원리

지 슈 2023. 1. 12. 23:53

블록체인의 참여자

블록체인은 대부분 누구나 참여할 수 있는 퍼블릭 블록체인.

(+프라이빗, 컨소시움, 하이브리드)

 

블록체인 네트워크의 참여자(들이 사용하는 기기) = 노드(node)

블록체인의 모든 데이터를 저장하고 기록 = 풀 노드 -> 많은 저장공간 필요, 현실적으로 어려움.

블록 헤더의 데이터만 저장, 검증이 필요할 때만 풀 노드와 대조 = 라이트 노드 -> 적은 저장공간으로도 네트워크 참여 가능.

 

 

블록이 생성되는 방식

  • 개인 지갑 생성: RSA(공개키 암호화) 방식 

- 개인키(private key) : like 계좌 비밀번호

- 공개키(public key) : like 계좌번호

 

  • 트랜잭션 발생(송금 및 구매) - 해시함수 이용하여 트랜잭션의 해시 값을 구하기 -> 비밀키로 암호화: 전자서명을 만듦.

해싱 알고리즘 사용: 대개 SHA-256 방식 사용 -> 데이터를 256비트 크기의 출력값으로 변환

ㄴ 결정론적(Deterministic) : 입력 데이터가 달라지면 언제나 다른 출력값

ㄴ 단방향(One-way) : 출력값으로부터 입력값을 유추할 수 없음. 오로지 입력값->출력값 방향으로만.

 

 

다른 노드들의 검증

블록을 생성하면, 그 블록을 네트워크에 공유한다.

 

그러면 다른 노드들이 ①트랜잭션의 해시값을 확인하고 ②전자서명을 공개키로 열어서 해시 값이 앞 과정과 동일한지 확인한다. 동일하다면 유효하다고 판정한다.

 

과반수의 노드들의 이 블록이 유효하다고 인정하면 해당 블록을 원본으로 저장하고, 다른 노드들은 각자 검증한 내용을 사본으로 저장하여 보관한다. 

 

이렇게 복잡하게 검증하는 이유: 아무도 믿을 수 없음. 

- 누구의 블록을 동기화해야하는지 합의해야 한다.

- 악의적인 참여자가 참여해도 정상적으로 작동해야 한다.

- 이중지불 공격:

51% 어택 -> 잘못된 트랜잭션이 담긴 블록을 51% 이상의 노드들이 유효하다고 인정하면 해당 블록의 노드는 거래를 해도 BTC가 남아있다.

레이스 어택 -> 어떤 노드가 다른 노드에게 BTC을 보내는 동시에 자신에게도 BTC를 보내면 자신에게 보낸 것만 인정되기 때문에 다른 노드는 받아야 할 BTC를 받지 못한다.

 

 

검증 방법 : 작업 증명(PoW: Proof of Work)

작업(Work) : 블록헤더의 논스(nonce)값을 구하는 행동

증명(Proof) : 논스값을 구한 노드가 채굴자(Miner)가 되는 권한을 얻는 것

 

▶ 논스?

채굴자가 구해야 하는 것 : 해시함수의 결과, 논스값을 찾는 것 -> 해시함수에 무작위 대입

 

 

블록의 데이터가 네트워크 내에 전파되는 방식

브로드캐스트(Broadcast) : 채굴자가 새로 채굴한 블록에 대한 메시지를 다른 채굴자들에게 전달

-> 다른 채굴자들은 블록이 유효한지 확인한다.

유효하다면, 원본은 저장하고 각자 검증한 내용을 사본으로 저장하여 분산 보관한다.

 

 

블록의 데이터

블록 헤더 -> 버전, 이전 블록 해시, 머클루트, 타임, 난이도 목표, 논스

  • 버전: 네트워크의 버전
  • 이전 블록 해시: 블록체인에서 바로 이전 블록의 블록 해시 값
  • 머클루트: 블록 내의 모든 트랜잭션의 정보를 요약한 해시 값 -> 라이트노드로도 네트워크에 참여할 수 있는 이유
  • 타임: 블록의 생성 시간
  • 난이도 목표: 난이도의 해시 목표 값
  • 논스: 해시 값을 계산하기 위한 임의 값. 특정 해시 값보다 작게 나오는 값을 찾으면 작업 증명 완료

 

블록 바디 -> 트랜잭션(실질적인 거래 정보) 상세하게 기록되는 부분

 

출처: 스팀잇 블로그

블록 해시

-> 블록헤더의 6가지 정보의 합을 SHA-256으로 변환한 결과 값: 블록의 고유한 해시 값

 

 

블록체인 원리의 장단점

장점

  • 탈중앙성으로 인해 향상된 보안 -> 모든 노드들이 데이터를 저장하기 때문에 신뢰할 수 있음
  • 안정성 -> 블록이 원본으로 저장되면 변경, 제거하기 어려움
  • 신뢰가 필요하지 않음 -> 누구나 참여, 모든 참여자에게 정보를 투명하게 공개

한계

  • 51% 어택 -> 잘못된 트랜잭션을 제공해서 블록 검증을 조작하는 것. 이중지불 가능.
  • 각 참여자들이 데이터를 저장 -> 저장공간 관리 어려움
  • 과다한 컴퓨팅으로 인해 환경 문제 발생