본문 바로가기
Investment/Blockchain, Bitcoin

알기쉬운 블록체인 11강 : 블록의 생성 II

by YOU_IN 2023. 7. 7.

 


제 11강 블록의 생성II


 

11-1. 블록 생성시 발생하는 문제들

 

◈ Node의 작업 상태

• Node들의 두 가지 작업 상태
1) peer가 생성하고 제출한 새 블록을 평가하는 상태
2) 새 블록을 만드는 상태
- 퍼즐을 풀어 블록을 완성하고 제출함
- 다른 피어들의 검증 결과를 기다림

• 각 노드의 상태는 중앙통제에 의하지 않고, 개별 노드에 도착하는 메시지에 의해 결정
- 모든 노드가 동일한 작업 상태를 유지함으로써 동일한 트랜잭션 데이터 이력을 유지하도록 만드는 것
- 각 노드는 새 블록을 포함하는 메시지를 받자마자 평가 상태로 전환 -> 평가가 완료되면 새 블록을 생성하는 상태로 전환

 

 

◈ Node의 처리 규칙

• 목적
- 다른 피어로부터 받은 트랜잭션 데이터와 블록을 처리

• 처리 규칙
1) 새 트랜잭션 데이터와 새 블록은 피어들 간의 통신으로 전달
2) 각 노드는 메시지 수신함에 모인 새 트랜잭션들 중 선택해서 처리
3) 각 노드는 새 블록을 최우선 순위로 즉시 처리
- 누가 블록을 만들어서 제출했다면 그것을 제쳐놓고 내 것을 제출해봤자 내 것이 채택될 확률이 낮기 때문에. 남이 만든 블록을 검증한 후 새 블록을 만들어야 한다.
4) 각 노드는 새 트랜잭션 데이터의 승인 여부와 형식적 및 의미상 정확성을 검증하여 처리
5) 각 노드는 유효한 트랜잭션들만 골라서 머클트리를 구성하고 해시 퍼즐을 풀어 새 블록을 생성
6) 각 노드는 해시 퍼즐을 해결하자마자 새로 생성한 블록을 모든 노드에게 전송
7) 각 노드는 새 블록에 대해 해시 퍼즐의 해를 검증하고, 새 블록에 포함된 모든 트랜잭션 데이터의 형식 및 의미상 정확성, 승인 여부를 검증
8) 각 노드는 자신이 가진 블록체인-데이터-구조의 복사본에 유효한 블록을 추가
9) 새 블록이 유효하지 않은 경우 이를 폐기하고, 노드는 계속 트랜잭션 데이터를 처리하거나 새 블록의 해시 퍼즐을 해결
10) 새 블록이 유효한 경우 노드는 새 블록에 포함된 트랜잭션들을 메시지 수신함에서 제거하고, 트랜잭션 데이터 처리와 새 블록 생성을 시작
11) 블록체인-데이터-구조에 추가된 블록이 차후에 유효하지 않거나 불필요한 것으로 밝혀지면 그 블록과 그 이후에 추가된 모든 블록들을 블록체인-데이터-구조에서 제거한 다음, 해당 트랜잭션들은 재처리를 위해 메시지 수신함에 다시 추가
12) 제출한 블록의 유효성을 인정받은 노드는 블록에 포함된 모든 트랜잭션에 대해 보상 받음
- 처리 요금을 그 노드가 받게 된다.
13) 블록체인-데이터-구조에 추가된 블록이 제거되면 이를 제출한 노드는 받았던 보상금을 반환

 

◈ 부정직한 Node의 처리

• 목표
- 안전성과 신뢰성을 알 수 없는 노드들로 구성된 완전 개방 P2P 시스템에서 무결성과 신뢰성을 유지하는 것

• 소유권을 관리하는 P2P 시스템에서 가장 두드러진 부정행위
1) 다른 사람으로 위장해 트랜잭션을 제출
- 코인을 많이 소유한 사람으로 위장해서 코인의 일부, 전부를 자신에게 보내도록 트랜잭션을 만들어서 보낸다.
2) 유효하지 않은 트랜잭션 데이터나 블록을 인정
- 여러 노드들이 짜고 치는 것.
3) 노드를 다운시키기 위해 수 많은 트랜잭션 데이터를 전송
- 갑자기 발생한 수많은 트랜잭션을 처리하느라 정신없는 틈에 정상적인 트랜잭션을 처리하지 못함
4) 특정 트랜잭션의 처리를 거부
- 거부된 Address를 가진 사람은 거래를 할 수 없다.
5) 정보 전달을 거부
- 남이 만든 정보를 peer들에게 전달을 해야 하는데, 내가 받은 정보를 전달하지 않고 그냥 가지고 있으면 과정이 느려져서 효율을 떨어뜨린다.

 

 

• 부정직한 행위의 방지책
1) 각 계정의 개인키를 소유한 주인에게만 접근을 허용하는 트랜잭션의 보안 개념 적용
- 비대칭 암호화 기법, 디지털 서명을 통해 개정의 주인을 식별, 인증, 승인하는 작업
- 다른 사람으로 위장해서 트랜잭션을 제출하는 것 자체가 불가능
2) 피어들간의 통신으로 모든 노드가 모든 정보를 수신하는 것을 보장
- 소문 형식이기 때문에 한 쪽에서 입을 닫아도 다른 경로를 통해 전달된다.
3) 특정 노드가 잘못되거나 데이터 처리를 멈추어도 전체 시스템은 계속 작동하도록 보장하는 시스템 아키텍쳐
- 일부 노드가 과부하 상태에 의해 다운이 되거나 어떤 노드가 특정 트랜잭션 데이터 처리를 거부해도 전체 블록체인을 이루는 다른 노드들이 그 일을 대신할 수 있기 때문에 정상적으로 작동할 수 있다.
4) 블록체인 알고리즘
- 합의 알고리즘. 블록체인을 이루는 노드 중 일부 노드들이 서로 짜고 유효하지 않은 트랜잭션 데이터를 인정해도 전체 노드가 정상적으로 작동하면 합의에 의해 부정행위를 방지할 수 있다.

• 부정직한 행위에 대응하는 가장 큰 무기
- 정직한 다수의 힘
- 적절한 보상과 처벌

=> 위조된 트랜잭션을 보내고 유효하지 않은 트랜잭션이나 블록을 승인하는 등과 같이 무결성을 해치려는 부정직한 일부 노드들의 욕망이 있더라도 보상을 향한 다수의 열망이 훨씬 크고 강력하다. 이를 위해 꽤 많은 숫자의 정직한 노드를 확보하는 것이 필요하다.

 


11-2. 분쟁의 해결

 

◈ 동일한 거래 이력의 유지

• 길 = 많은 사람들의 합의의 결과

• 목표
- 모든 노드가 동일한 거래 이력만 유지
- 소유권 확인 요청에 대해 모든 노드에서 같은 결과

• 해결할 과제
- 블록체인에는 특정 시간에 어떤 노드가 무슨 일을 할지 통제하는 장치가 없음
- 각 노드는 수신함에 도착한 메시지를 보고 할 일을 판단함
- 메시지는 분실, 지연, 또는 순서가 바뀔 수 있음 / 모든 노드의 작업 상태가 동일하지 않음 / 노드들의 작업이 중복될 수 있음
=> 그럼에도 불구하고 모든 피어가 동일한 거래 이력을 유지하도록 만드는 것!

 

◈ 해결 방법

• 분산 합의
- 집단적 의사결저 문제에서 동의나 합의에 이르는 과정
- 중앙 통제나 조정 없이 독립적으로 행동하는 개인들에 의한 합의

• 분산 합의 과정의 특징
1) 집단을 구성하는 독립된 개인들은 동일한 환경에서 행동함
2) 집단적 의사결정이 필요한 문제가 존재함
3) 개인들은 동일한 목표를 달성하기 위해 독립적으로 노력함
4) 목표 달성을 위해 개인이 취한 행동은 환경에 영향을 미쳐 의사결정에 도움을 줌
- 새로운 블록을 만드거나 남이 만든 블록을 수용하거나 거절하는 것
5) 각 개인은 환경 변화에 기반한 동일한 기준을 사용해 의사결정 문제를 평가

 

 

• 블록체인의 분산 합의
- 블록체인은 모든 노드가 단일 버전의 트랜잭션 이력을 선택해서 유지하는 것이 목적
1) 모든 노드는 동일한 블록체인-데이터-구조의 복사본을 가지고 동일한 알고리즘에 의해서 운영됨
2) 단일 트랜잭션 이력을 선택하는 문제
3) 모든 노드는 이익을 최대화하기 위해 블록체인-데이터-구조에 유효한 새 블록을 추가하고 보상을 받으려 노력함
4) 각 노드는 자신이 생성한 새 블록을 다른 피어들에게 인정받기 위해 공개함
5) 작업 증명 방식의 경우 새 블록 생성에 많은 노력이 들고 이를 조작하는데 더 많은 노력이 소요됨
- 둘 이상의 상충되는 트랜잭션 이력이 있을 경우 노력의 양을 기준으로 선택
- 노력의 양을 기준으로 선택된 결과 authoritative chain(권위 chain) or authoritative history라고 부른다.

 

◈ 작동원리 – 가장 긴 체인 기준

* 계산 노력의 크기를 판단하는 두 가지 기준
1) 가장 긴 chain 기준 2) 가장 무거운 chain 기준

• 가장 긴 체인 수준
- 많은 블록을 가진 블록체인-데이터-구조가 가장 많은 계산 노력이 소모되었을 것이라는 과정

 

◈ 작동원리 – 가장 무거운 체인 기준

• 해시 퍼즐의 난이도가 동적으로 결정되면, 새 블록을 생성하는데 필요한 노력은 블록마다 다름
- 가장 많은 노력이 소모된 체인은? 각 체인의 무게는 이를 구성하는 블록들의 난이도의 합

• 가장 무거운 체인 기준
- 각 블록별로 난이도가 표시된 블록체인

 

• 선택 받지 못한 체인의 처리
- 권위 체인이 선택되면, 나머지 가지에 속한 블록들은 버려짐 (고아 블록 : 22BC, BB15)
- 고아 블록과 그 후속 블록들을 생성하고 받은 보상은 모두 회수됨


- 고아 블록에 포함된 트랜잭션들은 발생한 적이 없던 것으로 간주
- 고아 블록에 포함되어 버려진 트랜잭션들은 수신함으로 수거됨
-> 다시 다른 블록 생성시 포함될 수 있음

 


- 공통 몸통은 명확하게 선택이 된 것으로 봐도 된다.

 

 

◈ 조작의 방지

• 공격자의 목표
- 권위 체인의 일부를 고아 블록으로 만듦
- 조작된 트랜잭션들로 이루어진 새로운 블록을 권위 체인에 포함시킴
- 공격자에게 이익을 가져다 주도록 소유권 정보를 배부함

• 조작의 다양한 관점
- 경제적 측면 : 트랜잭션 이력을 변경하여 소유권 조작
- 정치적 측면 : 원하는 결과를 얻기 위해 대다수의 표를 획득
- 기술적 측면 : 시스템의 무결성을 약화

• 조작 방법
: 숨겨진 중앙 통제 요소를 일시적으로 이용해 시스템의 상태를 변경
ex) 51% 공격

 

• 해시 퍼즐에 의한 조작 방지
- 해시 퍼즐 : 계산 비용을 증가시켜 조작을 방지함, 기술적 관점에서 블록체인-데이터-구조에 불변성을 부여하기 위한 수단
- 트랜잭션 이력의 집단적 동의에 이르는 과정
1) 각 블록은 투표 용지
2) 해시 퍼즐은 투표 참여에 드는 비용을 증가시킴
3) 부정직한 사람들이 투표를 참여하는 것을 억제

 


11-3. 블록 생성의 보상

 

◈ 결제 수단

• 어느 빵집의 고민
- 현금이 많지 않음, 빵의 신선도 유지를 위해 매일 빵을 새로 만들어야 함, 영업 종료 시에는 재고로 많은 빵이 남음
- 종업원 임금을 빵으로 지불하면? 현금 절약, 재고 처리
- 다른 업종도 같은 방식으로 임금을 지불한다면?
자동차 회사-차 / 건설 회사 – 집 / 조폐공사 – 돈
=> 시스템에서 생산되는 아이템과, 아이템을 만들기 위한 참여자들의 노력과 보상이 어떤 연관관계에 있는가에 대한 문제

• 블록체인 시스템의 보상과 처벌
- 합의 알고리즘으로 작업 증명의 방식을 쓴다면 보상은 트랜잭션에 대한 처리 수수료 처벌은 작업 증명
=> 보상을 어떤 결제 수단으로 지불할 것인가?

 

◈ 결제 수단에 대한 고려 사항

• 결제 수단 선택 시 고려사항
- 시스템에 미치는 영향을 고려해야 함
1) 무결성에 대한 영향
- peer들이 시스템 무결성 유지에 기여하는 이유는?
(i) 충분한 보상을 얻을 수 있기 때문
(ii) 충분히 가치있는 보상이 되려면 보상으로 사용되는 결제 수단의 신뢰성과 가치 유지가 핵심

2) 개방성에 대한 영향
- 블록체인은 개방형 P2P시스템
누구나 자신의 컴퓨터로 시스템에 연결할 수 있고 시스템 무결성 유지에 기여하면 보상을 받는다.
- ex) 보상으로 지급되는 결제 수단이 특정 국가에서만 인정되거나 이동에 제한이 있는 재화인 경우 -> 경제적 제약이 시스템의 기술적 개방성과 상충됨

3) 분산 속성
- 중앙 통제나 조정 요소가 없는 순수 분산 P2P 시스템에서 피어에게 보상하기 위해 사용한 지불 수단이 단일 중앙기관에 의해 통제되고 제어된다면?
(i) 뒷문을 통해 중앙 통제를 허용
(ii) 시스템의 분산 속성에 정면으로 위배

 

4) 철학
- 신뢰성을 확보하기 위해 중앙 통제 요소가 없게 설계된 순수 분산 P2P 시스템에서 결제 수단이 시스템의 주요 가치에 반할 경우
피어에게 보상으로 주어진 결제 수단 때문에 시스템 주요 가치인 신뢰성 자체가 무너지게 된다. 완전히 개방되고 순수한 분산 시스템이라면 이 문제에 대해서 확실한 답을 찾아야 한다. 그렇지 않다면 개방하고 분산된 시스템으로 갈 이유가 없다.

 

◈ BlockChain에 적합한 결제 수단

• 완전한 국제 통화가 갖춰야 할 조건
1) 디지털 형태로 제공해야 함
- 블록체인에 포함될 수 있어야 함
2) 실생활에서 결제 수단으로 인정받아야 함
- 일반 상품 구매에 사용이 가능해야 함
- 피어들이 받은 보상의 가치 부여가 필요함
3) 모든 국가에서 결제 수단으로 인정받아야 함
- 이를 인정하지 않는 국가에서는 사용자의 참여가 불가능하도록 해야 함
4) 이동에 제한이 없어야 함
- 피어들 간의 이전이 가능해야 함
5) 안정적 가치를 유지해야 함
- 노드가 보상으로 받은 것이 구매력 상실이라는 경제적 위험성을 방지해야 함
6) 신뢰할 수 있어야 함
- 신뢰를 생성하는 블록체인의 능력을 유지해야 함
7) 단일 중앙기관이나 국가에 의해 통제를 받아서는 안됨
- 블록체인의 분산 속성을 지켜야 함

• 비트코인이 보상으로 등장한 배경
- 기본 통화 중 앞의 조건들을 모두 충족시키는 것이 존재하지 않는 문제를 해결하기 위해 비트코인이 보상으로 등장하게 됨
- 7가지 조건을 모두 만족하는 통화나 결제 수단을 만들어 냈을 때 분산 시스템의 피어에게 보상하는 용도 말고도 모든 경제 활동에서 이를 사용할 수 있다. 그렇게 되면 지금과 같이 불안정한 통화 시스템에서 벗어나 좀 더 완벽한 통화 시스템을 구축할 수 있다. 이러한 엄청난 가능성을 가지고 비트코인이 이 세상에 등장하게 된 것이다.

• 비트코인 블록체인
- 새로운 종류의 디지털 화폐의 소유권을 관리하는 순수 분산 P2P 시스템
- 블록체인-데이터-구조에 새 블록을 추가하고 검증하는 일을 하는 피어를 보상하는데 사용
=> 블록체인 암호화 기법에 기반한 화폐를 암호 화폐라 부름
-> 신뢰할 수 있는 결제 수단인가? 충족되지 않는 조건 : 2, 3, 4(법정 화폐로 교환될 때는 많은 제한), 5
=> 해결해야 할 문제가 많이 남아있다.

 

댓글